суббота, 16 января 2010 г.

[comp.prog.education] Что было хорошего когда я учился программированию в университете

Продолжение темы, поднятой статьей Страуструпа об обучении программистов. Я хочу рассказать об одной вещи, которую никто не упоминает в разговорах о подготовке программистов в ВУЗах. Которую, однако, я считаю очень важной и с которой мне в свое время очень повезло. Это – свобода в экспериментировании во время учебы.

Вот чем хороша учеба, так это тем, что можно пробовать разные вещи, совершать ошибки и бросать что-то недоделанным, когда к этому теряется интерес. Это время такое – хочется попробовать все. Да и преподаватели относятся к студентам именно как к студентам, прекрасно понимая, что много от них ждать не приходится.

Вот мы в свое время и пробовали. На первом курсе, когда машинное время (практически неограниченное) у нас выделялось на Robotron 1715, мы с друзьями писали на Turbo Pascal 3 простенькие игрушки (вроде Sokoban).

Потом нас пересадили на IBM PC и доступ к машинам сильно сократился, но все равно удавалось экспериментировать. Так, когда в качестве очередной лабораторной работы было озвучено задание “Работа с текстовыми файлами на языке Паскаль”, то мне захотелось сделать текстовый редактор по типу редактора Turbo Pascal 5.0. И написал, пусть сильно урезанный по возможностям, но работающий. И забросил его сразу же, поскольку больше он мне не был интересен.

А когда на втором курсе нам начали читать ассемблер x86, то вместо обычных лабораторных работ мы взялись написать растровый графический редактор. На ассемблере. Конечно, не написали. Но получили опыт, совершенно несравнимый с тем, который нас ждал, если бы мы пошли обычным путем – через простенькие задачки, вроде “написать процедуру сравнения двух строк на языке ассемблера”.

Потом были и другие эксперименты, которые развивались по одной и той же схеме – интересная идея, быстрое воплощение 80-90% от задуманного, затем резкая потеря интереса и, если повезет, то пропихивание проекта как курсового, или получение с его помощью автомата на зачете или даже экзамене. Но не смотря на то, что весь написанный код с удовольствием отправлялся в корзину, опыт-то оставался. Собственный опыт. Поскольку все приходилось познавать самостоятельно, а такие знания гораздо ценнее.

Подобная свобода творчества была невозможна без особой атмосферы здоровой соревновательности и обмена знаниями между студентами (и даже преподавателями). Кто-то научился программировать знакогенератор на IBM PC – нужно его расспросить и сделать что-то покруче, например, текстовые окошки с тенями. Сделали! Тут же у тебя расспрашивают, как тебе это удалось. А потом тот, кто тебя расспрашивал, показывает тебе графический курсор мыши в текстовом режиме – точь-в-точь такой, как в Norton Utilites. А ты в “отместку” делаешь библиотеку для реализации менюшек и диалогов с кнопочками и редакторами, как у тех самых утилит. А кто-то тебе показывает библиотеку Zinc Interface, а другой говорит, что Turbo Vision гораздо круче… :)

Конечно же, ничего этого не было бы без доброжелательного отношения к нашим “поискам” со стороны преподавателей. Контроля за их работой, наверное, было меньше в те времена. Поскольку за удачно решенную “на спор” с преподавателем задачу он мог зачесть все лабораторные работы за семестр, даже не требуя никаких формальных отчетов от тебя. Или мог поставить “отлично” автоматом на экзамене за то, что именно ты координировал работу всех остальных студентов при коллективной разработке общего большого задания. (Сейчас до меня доходят слухи, что работа преподавателей в родном универе жутко забюрократизированна – должны быть строгие учебные планы на каждую лекцию и лабораторную, все лабораторные должны быть запротоколированы, никаких “автоматов” на экзаменов и пр.)

Что оставалось после этого в сухом остатке? Хорошо развитые базовые навыки в написании программ. У нас уже формировался стиль (умение именовать сущности в программе именно тогда у меня сформировалось), накапливался опыт комментирования и документирования, отладки и, в какой-то степени, проектирования. Конечно, настоящими программистами нас ВУЗ не сделал. Но потом, как говорят, придя на производство, лично мне было просто – учиться программировать не нужно было. Сейчас же, беря молодого сотрудника на работу, первое время приходится тратить именно на обучение программированию.

Не могу сказать, что тогда было хорошее и актуальное преподавание профильных предметов. До очень многих вещей мы доходили сами, на своих ошибках. Но вот атмосфера и свобода, которая царила во время учебы – вот это было главным.

Почему я делаю акцент на свободе экспериментирования во время учебы? Потому, что насколько я могу судить, у студентов-программистов ее уже нет:

  • строже стала учеба (по слухам, сейчас в Белоруссии зарплата учителей напрямую зависит от количества заданных на семестр лабораторных, поэтому каждый преподаватель старается дать по 10-15 лабораторных по своему предмету – это очень много);
  • возрос спрос на программистов и студенты сейчас начинают работать уже на 2-3 курсах (а раз пошел работать, то все – лопату в руки и копай отсюда и до обеда).

В результате нет возможности безнаказанно совершать детские ошибки, нет той свободы поиска… Что не есть хорошо. Вряд ли бы я программировал бы так, как сейчас, если бы в конце первого курса у меня не было возможности написать простенький текстовый редактор в качестве лабораторной работы.

пятница, 15 января 2010 г.

[comp.prog] POCO 1.3.6p2 released!

Состоялся выход очередной обновленной версии POCO –1.3.6p2. Это bug-fix версия, переход на которую рекомендуется всем, кто использует модули Crypto, Net, NetSSL и XML. Полный список изменений можно посмотреть в CHANGELOG.

URL для скачивания: http://sourceforge.net/projects/poco/files/sources/poco-1.3.6

[life.painting.wow] Обалденные оптические иллюзии Octavio Ocampo.

Вот здесь большая подборка работ художника Octavio Ocampo. Внушаить!

[comp.prog.thoughts] Краткое впечатление после прочтения статьи Б.Страуструпа об обучении программистов

Закончил чтение статьи “What Should We Teach New Software Developers? Why?” Первая мысль после прочтения: то, о чем пишет Страуструп, было в нашем, тогда еще советском, образовании. Я учился с 1990-го по 1995-ый. У нас было и общее направление – разработка ПО (в рамках которого читались курсы и по архитектуре ЭВМ, и по алгоритмам, и по структурам данных, и по языкам программирования, и по базам данных, и по системному программированию и т.д.). Но была и специализация – я шел по кафедре Вычислительной Математики и Программирования, и в рамках специализации нам читали спецкурсы по методам вычислений вообще, методу конечных разностей, методу конечных элементов, методу граничных элементов в частности. Чего не было у студентов соседней кафедры Математических Проблем Управления – у них были свои спецкурсы. Была общематематическая подготовка – дискретка, линейная алгебра, аналитическая геометрия, матан + ТФКП + основы функана, теория вероятностей, дифуры, уравнения мат.физики, методы оптимизации и пр. Были общеобразовательные курсы – от истории и философии до гражданской обороны и метрологии.

Было несколько учебных практик. Была большая производственная практика перед защитой диплома. Было множество лабораторных. Были курсовые работы (по нескольку штук на весь год). У многих курсовые перерастали в большой, долгоиграющий проект, который выливался в диплом. Зачастую толковые студенты писали код для своих научных руководителей, некоторые при этом участвовали в коммерческих проектах, которые эти руководители вели. Так что к моменту завершения ВУЗ-а те студенты, которые сами все делали, имели за плечами далеко не одну тысячу написанных и отлаженных строк на разных языках программирования.

Были у нас разные преподаватели. И типичные представители академической науки, которые считали программирование занятием для обезьян. И прожженные практики, многие из которых имели многолетний опыт написания разнообразных программных систем (часть преподавателей была переманена из гомельского КБСП). Иногда их рассказы “за жизнь” были полезнее всяких теоритических лекций.

Ну и, наконец, было подобие желаемого Страуструпом “лицензирования” специалистов – защита диплома + гос.экзамен. Ведь корочка с подтверждением того, что ты дипломированный инженер-программист, не просто так выдавалась. Право на ее обладание еще подтвердить нужно было.

В общем то, о чем “плачется” Страуструп в своей статье, уже было построено в СССР в конце 80-х. А затем – благополучно просрано. Я так думаю.

PS. Я обещался написать еще свои мысли по поводу обучения программистов. Сделаю это обязательно в одной из следующих заметок.

четверг, 14 января 2010 г.

[comp.wow] LG GW990 – очередной PDA из категории “Хочу”

Разработан компанией LG в сотрудничестве с Intel. Имеет 4.8-дюймовый экран с разрешением 1020x480, 512Mb RAM и 16Gb Flash-диск, Moorestown процессор (тактовая частота не разглашается). Предназначен для работы в 3G сетях. Работает под управлением Moblin. Дополнительную информацию, фотографии и небольшое видео можно найти на engadget.com.

Вот видео этого устройства с CES 2010:

Когда-то давно, когда я был начинающим Palm-оводом с черно-белым m105-м (разрешение экрана 160x160), можно было пользоваться устройством хоть несколько лет прежде чем перейти на что-то новое (я перешел с m105 на Sony Clie SJ20 через год). Потом новые девайсы стали появляться настолько быстро и часто, что не успеваешь собрать нужную сумму на понравившуюся тебе машинку, как появляется еще более привлекательная модель. В результате я отказался от участия в этой гонке и сейчас просто с удовольствием наблюдаю за соревнованиями производителей со стороны ;)

[life.nature] Интересный зимний эффект

В прошлое воскресенье и в понедельник у нас в городе при минусовой температуре (порядка –4 градусов) шел дождь. Ну или что-то типа дождя – мелкие капельки незамерзшей воды, а не снег или град. А потом ударили морозы. И на снегу образовался наст толщиной в 6-7 миллиметров. Коты во дворе (не понятно с какой стати) бегают по снегу даже не проваливаясь в него.

Но самое интересное – это звук, который раздается, когда ты сам наступаешь на этот наст и он ломается под твоими ногами. Звук очень похож на звук падающего на бетонный пол и разбивающегося стекла, точь-в-точь. Вчера вечером выбрасывали на помойку старую тумбочку и пришлось обходить здоровенный сугроб по снегу. Поначалу я думал, что кто-то до нас выбросил куски стекла и оно сейчас лопается у меня под ногами. Но оказалось, что это наст так звенит :) Потом шли домой и я не мог удержаться от соблазна отламывать куски наста и бросать их на снег – такой художественный “БЛЯМ-С” раздавался, не передать. Классно! Жена, правда, моего восторга не разделяла: “Ты-то хоть перестань, мне хватает того, что дочка всю дорогу до школы этим же самым занимается!”