Прислано paxeefixee 11.02.2011 23:41
#1
Итак, товарищи, у нас начался курс ООП.
Все бы хорошо, но, как нетрудно было услышать, наш преподаватель Смирнов Сергей Сергеевич собирается обучать нас в качестве объектно-ориентированного языка программирования языку Smalltalk (а не Java, C++ или C#, как мы ожидали). Тут-то и начинается настоящее веселье.
Во-первых, меня, как человека, совершенно, увы, не знакомого с этим языком, несколько шокировала
статья на Википедии, которую я прочитал для возымения первого впечатления о языке. Наибольшее изумление и страх за собственное будущее, целостность мозга и здоровье моих будущих детей вызвали следующие вещи:
Всё — объекты. Строки, целые числа, логические значения, определения классов, блоки кода, стеки, память — всё представляется в виде объектов. Выполнение программы состоит из посылок сообщений между объектами.
Одной из неожиданных особенностей Smalltalk является то, что традиционные конструкции: if-then-else, for, while, и т. д. не являются частью языка. Все они реализованы с помощью объектов.
Есть всего три конструкции:
посылка сообщения объекту;
присваивание объекта переменной;
возвращение объекта из метода;
и несколько синтаксических конструкций для определения объектов-литералов и временных переменных.
«всё — объекты»
и далее в таком духе. На мой взгляд, конечно все мы эту специфику рано или поздно поймем и выучим, но на мой взгляд много логичнее было бы действительно обучать нас Java, C++ или C#. На то есть множество причин. Сергей Сергеевич ведь спрашивал нас, какой язык мы изучали до этого, а это ведь был Delphi (Object Pascal). Синтаксис Java, C++ и C# был бы для нас гораздо ближе, понятнее, логичнее, ведь конструкции-то все примерно одинаковы, похожи, считай что лишь только именно записи несколько отличаются. Нас же сразу решили пихнуть носом в «всё — объекты».
К тому же у меня создалось впечатление, что на языке Smalltalk было реализовано смехотворное количество успешных проектов, что он чуть ли не эзотерический язык с отсутствием вменяемого будущего, и мы будем заниматься считай "программированием ради программирования", т.е. попросту говоря, онанизмом. В
этой теме на форуме
progz.ru человек привел примеры коммерчески успешных проектов. Жаль, только что бОльшая часть ссылок уже не работает, хотя есть образы на
web.archive.org, и
список по СНГ. В отличие от него, Java и C# используются повсеместно и активно развиваются, имеется множество проектов на них. C++ - так вобще уже считай классика.
Хотя для обучения он
говорят хорош, смущает лишь фраза "Is very easy to learn... one of its original design intentions was to be a learning environment for children.". Вспоминается известная фраза про "доступность для идиотов" и "то пользоваться этим и станет только идиот" (простите за грубость).
Хотя, понятное дело, неправильно говорить о чем-то, не попробовав это, но я думаю по крайней мере меня не будет покидать ощущение, что я программирую на уже мертвом и не особо-то нужном языке :(
Ну и также присутствие компиляции лишь в байт-код для ВМ (хотя тут Вики говорит что "современные коммерческие виртуальные машины компилируют байткоды в машинные коды для быстрого выполнения" (JIT-таки видимо присутствует)) огорчает меня по причине снижения быстродействия (да, я такой) и т.д. и т.п.
Во-вторых, помните, преподаватель говорил, что обучение будет проходить в среде
VisualAge Smalltalk, информацию о которой следует смотреть на
www.instantiations.com? Все бы хорошо, если бы не
её цена, составляющая ни много ни мало
$6,995. Забавно, правда?
Насколько я прочел, разрабатывали ее сначала IBM, а потом отдали на растерзание Instantiations. Естественно тут же были подняты большинство известных нам поисковых механизмов, Google, торрент-трекеры, сети DC... Результат на "вылеченную" или "полную" версию был, увы, не получен.
Нашли лишь
http://af.telefonet.ru/KURS_4_2/index.html (небольшой студенческий сайт), где есть среди методичек некая версия, но насколько я понял, она, увы, тоже триальная (могу ошибаться конечно). Да, я упомянул, что есть триальная версия этой среды на офф. сайте, но я ее еще не скачивал и так и не понял, какие там ограничения. Если по функционалу - то плохо, если, как это часто бывает, по времени работы - то это конечно можно обойти ;)
Нашлась и причина, по которой он посоветовал нам именно этот продукт. На том же сайте доступна некая
"Academic License Program", которая оказывается есть и у нашего института (доказательство
тут).
Так что все это несколько печально.
Но, собравшись на конференции с
SGL900,
Jony321 и
harrrrr и обсудив все это, мы надумали несколько вариантов решения:
Со средой разработки:
- Посмотреть список реализаций Smalltalk, например тут и тут (в этих источниках они наиболее хорошо описаны, на мой взгляд), подобрать из них имеющие бесплатные/вылеченные версии, соответствующие стандартам(я думаю это наиболее важно для нас) и может спросить у преподавателя мнения о выбранных средах, дабы затем выбрать более подходящую для личного использования. Конечно, если будут использованы в процессе обучения вещи, специфичные для VisualAge Smalltalk, то этот вариант отпадает.
- Просто попросить у самого преподавателя лицензию :P
- Если у trial-версии VisualAge Smalltalk ограничения лишь по времени (повторюсь, я просто не проверял этого, а на офф сайте инфы об этом не нашел, ткните носом если узнаете), то попытаемся их обойти :|
- ... (кто-то вроде предлагал что-то еще)
С самим языком:
- Смириться
- Слезно просить его учить нас Java, C++ или C# (кстати, я точно где-то встречал информацию о том, что у нас вообще обычно и учат Java/C++ на ООП, а Smalltalk оставляют для тех, кто хочет заниматься ООП углубленно, если нужно - найду снова эту информацию)
Так что вот такие данные известны (и вспомнились) мне. Дополняйте, если что-то упустил, и отписывайте свои мысли по этому всему :)
Редактировал paxeefixee 12.02.2011 08:12