Тема: Сайт групп факультета ИТ МИРЭА :: Человек и Smalltalk

Прислано 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 и обсудив все это, мы надумали несколько вариантов решения:

Со средой разработки:

С самим языком:


Так что вот такие данные известны (и вспомнились) мне. Дополняйте, если что-то упустил, и отписывайте свои мысли по этому всему :)

Редактировал paxeefixee 12.02.2011 08:12

Прислано Olorin 12.02.2011 00:29
#2

я за
Слезно просить его учить нас Java, C или C#
. Насиловать труп мертвого языка - это не айс. К тому же, как уже было сказано, си должен пойти проще, так как некоторые основы у нас уже есть.

Прислано HARM_x64 23.03.2011 15:54
#3

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

Прислано Mentor 23.03.2011 16:09
#4

Привет, товарищи студенты!
Пожалуйста, не нужно меня банить, я по умолчанию добрый, нормально реагирую на критику и студенческие форумы, если на них не поливают грязью человека как личность.

Спасибо автору темы за проделанную работу – не поленился полазить по инету, однако найденное лишь малая часть интересной области знаний.

Еще есть много материала для размышлений, вот, например, навскидку…
http://bugtraq.ru...ailed.html
Статья, которая подтверждает, что чистота идеи ООП как инструмента борьбы со сложностью, была «изуродована» «наСИльниками» с их «структурно-модульным мозгом». В результате мы имеем надвигающийся крах текущих реализаций ООП.
Пора вспомнить про Smalltalk как инструмент, от рождения соответствующий ООП :)

Всякая аргументация, агитация, сравнение и борьба с «крестовыми походами» (лишь немногое):
http://www.rsug.r...ySmalltalk
http://www.kv.by/...091105.htm
http://www.rsdn.r...83411.aspx
http://www.moismi...smalltalk/
http://viaprog.vr...ffler.html

Почитайте материалы международных конференций по ООП – OOPSLA
http://en.wikiped...iki/OOPSLA - конференция проходит каждый год с 1985 и по сей день – Smalltalk на ней постоянный участник.

Статья
http://www.eli.sd...lltalk.pdf поможет интуитивно понять синтаксис и покажет, что синтаксис Си противоестественен для человека. Мысля на Си, Вы подчиняетесь компьютеру, а должно быть наоборот…

http://www.math.r...ml.ru.html - Статья серьезного человека о серьезном Smalltalk-проекте

Обратите внимание на сайты http://www.smallt... , http://www.world.st/ , http://www.smallt... - там вообще много всего (больше, конечно, на англоязычных).

Кстати, по поводу «мертвости» языка – на модели земного шара в правой части сайта http://www.smallt... красными точками обозначены места активного использования Smalltalk – по-моему, впечатляет.

И уж точно не назовешь мертвым язык, если:
1) по нему пишется и продается столько книг
http://www.amazon...b3f9ab9ff7
Есть и бесплатные книги:
http://stephane.d...Books.html

2) существуют постоянные вакансии
http://www.indeed...=smalltalk

3) живут и развиваются различные сообщества, например
http://www.esug.org
http://www.rsug.ru/
http://www.clubsm...
http://www.stic.st/
и т.д.

Разные версии Smalltalk в Москве изучается не только в МИРЭА, а также и в других вузах, вот, например неплохая методичка из МИЭМ
http://uiits.miem...lltalk.htm

Небольшой туториал от IBM
http://www.inf.uf...ntent.html

Российские проблемы со Смолтоком - лишь следствие железного занавеса. Не вижу причин, почему бы не развить Ваш кругозор в этом направлении.

С уважением, С.С.С

Редактировал Mentor 28.03.2011 12:02

Прислано Mentor 23.03.2011 16:16
#5

HARM_x64 написал:
Вот лекция, которая сегодня была на ООП. Сергей Сергеевич сказал, что эту лекцию нужно знать и понимать. Поэтому смотрим, стараемся понять что я написал и к следующей лекции надо подготовить вопросы по этой лекции о том, что в ней было не понятно, ибо лекция это очень важная.


Если быть точнее, я сказал, что не закончил тему, начатую в лекции, но чтобы я мог ее закончить, все отсутствовавшие должны осознать, что было уже сказано, и подготовить вопросы....

Прислано harrrrr 23.03.2011 18:51
#6

Тем не менее весь сложный софт, интенсивно работающий с крупными массивами данных, обычно пишут на C\С++, и нет смысла отрицать, что подобный менее радикальный подход к объектно-ориентированности является куда более популярным, особенно среди Open Source софта, который является на данный момент наиболее приоритетным, инновационным и активным направлением развития ПО. Взять то же ядро Linux, которое стоит в сотнях миллионов устройств по всему миру, тот же OpenOffice, сейчас находящийся в процессе пусть и медленного, но победоносного похода (сужу по знакомым, никакого отношения к IT не имеющим), Firefox\Chrome (одним из которых пользуются, наверное, все), Miranda\Pidgin\Gajim, Blender, и, наконец, Android, который на рынке мобильных устройств показал отличный пример стратегии "пришел, увидел, победил".

И Smalltalk с его огромным ресурсопотреблением ни на мобильных устройствах, ни на компьютерах конечных пользователей, ни уж тем более на серверах места нет. На первых сегодня в большинстве своем стоит Android, куда реже - iOS, на вторых - Windows или Linux, который благодаря появлению дружелюбных к пользователю и нетребовательных к ресурсам дистрибутивов за последние два-три года стал куда как популярнее, на третьих годами держится связка Linux Apache MySQL\PostgreSQL PHP\Ruby. Гибридные языки (Python и Ruby), взявшие гибкость из объектно-ориентированностии и простой, понятный, прозрачный синтаксис из скриптовых языков также в последнее время становятся весьма и весьма популярны, где-то вытесняя из некритических областей тот же C++ .

Смысла сейчас изучать Smalltalk человеку, который хочет работать что для удовольствия, что для денег в Open Source экосистеме (а это наш случай, ведь мы же - будущие системные администраторы), по-моему не то чтобы очень много. А те же сложные ERP и онлайн-магазины, которые были перечислены на выданных нам листах, куда успешнее пишутся на той же Java, не зря же ее считают одним из основных "энтерпрайзных" языков. Python, Ruby, Java или опять-таки C++ имеют куда большую практическую пользу, и изучать их было бы куда приятнее.

Сообщества и конференции, каждый год собираемые разработчиками на этих языках, думаю, перечислять нет смысла, ибо их поистине великое множество. К тому же в Smalltalk из-за неудобной работы с тем, что в других языках называется единицами компиляции, затруднено программирование несколькими людьми одновременно. Вакансии Smalltalk-программистов пусть и существуют, но их в любом случае куда меньше, чем программистов на C++\Python\PHP или Linux-администраторов.

Mentor написал:
по-моему, впечатляет.


Если уж речь зашла о впечатлительности, то можете посмотреть ролики визуализации коммитов кода в SVN различных крупных свободных проектов с помощью Gource, а также ролики анимационных фильмов Blender Foundation и, к примеру, Project London.
Все это сделано целиком и полностью в свободном ПО, C\C++\Python. По-моему, впечатляет куда больше картинки с тремя мигающими точками.

Редактировал harrrrr 23.03.2011 22:21

Прислано Olorin 23.03.2011 18:52
#7

Кстати, по поводу «мертвости» языка – на модели земного шара в правой части сайта http://www.smallt... красными точками обозначены места активного использования Smalltalk – по-моему, впечатляет.

Это карта переходов на сайт(что не обязательно означает использование языка).

И уж точно не назовешь мертвым язык, если:
1) по нему пишется и продается столько книг

Я обошел 5 или 6 книжных магазинов разной "крупности", и везде при упоминании слова "Smalltalk" на меня смотрели взглядом, сочетающим в себе непонимание и ужас. В одном даже спросили "Может, Вам нужен Си или Делфи?".

Есть и бесплатные книги:
http://stephane.d...

А как быть людям, которые в силу различных причин не изучали английский язык на уровне, достаточном для свободного чтения англоязычной литературы? Хотя это уже не так критично: я нашел одну книгу по Smalltalk на русском языке(в аттаче).


P.S.: Я не хочу вставлять Вам палки в колеса, Сергей Сергеевич, да и выучить еще один(пусть и не такой популярный в России) язык программирования совсем не против. Но лично я, например, должен иметь какой-то источник информации помимо лекций, чтобы понимать предмет. Живой пример: на первой же лабораторной столкнулся с проблемой создания массива из N элементов(согласен, очень простая задача для любого языка). Но ни в конспекте лекции, ни в методичке я не нашел даже подсказки, как это сделать. Выяснилось, что надо просто дописать аргумент N к методу new.

Редактировал Olorin 23.03.2011 18:57

Прислано SGL900 23.03.2011 20:18
#8

Ну, раз уж все что-то написали, то и я поддамся стадному чувству ))
Естественно с чем-то я согласен в плане использования Smalltalk, а вот с чем-то нет.
К примеру я согласен с тем, что
Smalltalk как инструмент, от рождения соответствующий ООП

(Ведь это основная идея Smalltalk "Всё - Объекты" )
В Smalltalk действительно очень легко работать (хотя я до сих пор не сделал первую лабу, но по отзывам в интернетах это и так легко прослеживается)
По большинству параметров Smalltalk действительно обгоняет остальные языки программирования и на википедии есть статья "Сравнение языков программирования" которая это доказывает (Ссылку не дам, ибо она две строчки заняла бы).
Но:
- Программируют не ради идеи, убеждения или принципа. Программируют ради удовольствия (или денег). Если в языке из за какого либо принципа отвергает улучшения или нововведения, то это имхо плохо (начинает напоминать отношение церкви к науке в средневековье).
- По поводу популярности языка вот http://habrahabr....nal/22499/ (и это статистика по миру).
- По поводу книг можно там же на амазоне вбить C++, Java и как результат 2297(С++) или 4363(Java) против 160(Smalltalk)... Так что изучать Smalltalk действительно нелегко.
- Так же, из того что вы говорили что на Smalltalk пишется большинство оффисных приложений говорит о том, что в серьезные разработчики со знанием Smalltalk путь закрыт, так как действительно, сейчас большинство компаний гонится за быстротой и минимизацией используемых программой ресурсов и это легко прослеживается на примерах приведенных в посте от harrrr.

Редактировал SGL900 23.03.2011 20:19

Прислано harrrrr 23.03.2011 20:39
#9

А еще в Smalltalk нельзя толком работать с более-менее сложной графикой, в т.ч. трехмерной (в том же Blender собственно kernel обсчета графики написан на C\С++, а все остальное на Python, что позволяет его относительно просто расширять, изменять и дополнять и в то же время требовать мало памяти и ресурсов) , плюс если на обычных системах, в которых для расчетов используется исключительно центральный процессор он отстает в математических вычислениях минимум на порядок, то на системах, в которых есть видеокарты, поддерживающие тот или иной вид GPGPU-вычислений, это отставание увеличивается еще во многие десятки, сотни и тысячи раз из-за отсутствия поддержки OpenCL или хотя бы CUDA в Smalltalk.

Mentor написал:
2) существуют постоянные вакансии
http://www.indeed...=smalltalk


На HH.ru, крупнейшем в России сайте IT-вакансий, нет ни одной вакансии программиста Smalltalk.
Ну и маленький такой штрих:
~$ apt-cache dump | grep Package: | wc -l
41639

41639 приложений только в репозиториях текущей стабильной версии Ubuntu. Из них на Smalltalk 12. Если напечатать список одних только названий, то получится не 2 страницы, а 772.

Редактировал harrrrr 23.03.2011 22:16

Прислано paxeefixee 23.03.2011 21:26
#10

Mentor, мы рады приветствовать вас на нашем скромном студенческом форуме! :)
Никто вас даже и не собирался банить, что вы :)
Мы всегда готовы выслушать все точки зрения и попытаться понять любую позицию, если вы об этом.

Искренне благодарим Вас за "наводки" на полезные материалы и методички, они непремено найдут свое место в разделах сайта и в наших головах.
Также хотелось бы написать несколько замечаний по поводу этого сообщения.

Mentor написал:
чистота идеи ООП как инструмента борьбы со сложностью, была «изуродована» «наСИльниками» с их «структурно-модульным мозгом»

Быть может, ведь никто не утверждал, что в Си-подобных языках идеальная реализация ООП. Но мы-то с ними знакомы много больше :)
По-моему как раз одна из чрезвычайно полезных черт "классического" программирования - это как раз структурность и модульность, оно дает "почувствовать" его своими руками, глазами, мозгом в конце концов.

Mentor написал:
что синтаксис Си противоестественен для человека. Мысля на Си, Вы подчиняетесь компьютеру, а должно быть наоборот…

Да, наверное так, но ведь далеко не всегда стоит "лезть со своими законами в чужой монастырь", не так ли? :)
Компьютер (по крайней мере сейчас) еще не настолько "подчинен" человеку, да это и совершенно необязательно, как показывает мировая практика программирования. Может, отхожу далеко от темы, но разве всегда рационально ли это - подчинять полностью не столь уж совершенному человеческому мышлению много более структурированную машинную логику (которая хоть и была безусловно придумана человеком, но ведь реализует некие идеалистические технические концепции)? Лично я готов использовать такие "неествественности", более того, они мне уже давно таковыми не кажутся.

Насчет статьи - (http://www.math.r...ml.ru.html) - я очень рад за Пентагон. Нет, ну правда.
Жаль, только что он от нас далековато :)
У России например есть МСВС, которая основана на Linux, в котором, насколько я знаю, Smalltalk не использовался. Конечно, безусловно, цели разные, но раз уж заговорили о использовании языков в таких инстанциях - то вот пример.
Язык Smalltalk, как вы упоминали, хорошо и часто применяется в абстрактном моделировании. Но это, к сожалению, не столь обширная область, сколь хотелось бы, не так ли?

Mentor написал:
Кстати, по поводу «мертвости» языка – на модели земного шара в правой части сайта http://www.smallt... красными точками обозначены места активного использования Smalltalk – по-моему, впечатляет.

Если одна точка на этом шаре означает посетителя (что скорее всего) - то если бы поставить красные точки на месте программистов на С++, то я боюсь что у нас в глазах зарябит. К тому же не могу не заметить, что

Потому мне, к сожалению, кажется что подобные "карты" нельзя использовать в качестве мерила популярности языка.
По поводу популярности языков вроде C/C++/Java/C#/Python/PHP/Ruby/Perl могу представить множество глобальных исследований и рейтингов, составленных по более правдоподобным параметрам.

Mentor написал:
И уж точно не назовешь мертвым язык, если:
1) по нему пишется и продается столько книг
http://www.amazon...
Есть и бесплатные книги:
http://stephane.d...ml[/quote]
Ну, что же, это отлично. Но я думаю что можно найти множество книг и по Fortran, Cobol, Algol, но разве скажешь, что они сейчас активно живут (не их производные, а именно они сами)? Да и если взять первые же попавшиеся книги из этого каталога и посмотреть на их года выпуска (или постановки на продажу, но второе точно идет после первого) - 2000, 1996, 1989, 1998...
Говорят, конечно, что хорошие книги не стареют, но помоему годы выпуска этих книг кое-о-чем говорят.
Да и снова - интересно было бы посмотреть хотя бы их объемы продаж.

Насчет http://www.rsug.ru/. Последняя новость датируется прошлым годом, а на самом сайте написано:
Статус
На текущий момент группа находится в стадии формирования (хотя бы потому, что до сих пор не ясны критерии окончания этой стадии).

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

Mentor написал:
Не вижу причин, почему бы не развить Ваш кругозор в этом направлении.

Развитие кругозора оно конечно хорошо, но очень хотелось бы иметь, так сказать, некую опору под этим кругозором :)

В заключение хотелось бы сказать, что конечно мыслить и каталогизировать все объектами и классами объектов - одна из черт человеческого мышления. Безусловно, в поледнее время все чаще видны тенденции перехода к новому типу процессоров, например нейрокомпьютеры, которые работают по принципу нейросетей. Но - пока что в реальной жизни этого не видно, посему по крайней мере на сегодня кажутся лучшими более "приземленные" языки со смешением черт функциональной парадигмы и ООП. Неужели пришел конец "функциональщине"? Я сильно в этом сомневаюсь. К тому же также многие функции человека и его мышления можно рассматривать как именно "подпрограммы", например биение сердца, дыхание и прочее.
Посему мне кажется, что на данном этапе нашего изучения программирования было бы неплохо изучать язык, который сочетал бы обе парадигмы, оставлял бы альтернативы и давал бы возможности использовать "традиционное" структурное программирование.

// PS. Смотрю, пока писал, тут уже много отпостили по этому поводу, в т.ч. и о том, на чем заострял внимание я.

Редактировал paxeefixee 23.03.2011 21:33

Прислано Saraf 24.03.2011 08:57
#11

Зато потом, устраиваясь на работу, будет круто всех удивить фразой: " Я знаю Smalltalk" :D
Так что я за)

Прислано Drednout 24.03.2011 11:07
#12

Наверно и мне надо сказать пару своих слов "русским языком" в этом топике :)
Я с энтузиазмом отношусь к изучению SmallTalk, поскольку он действительно даёт более широкое представление именно по тематике курса ООП. Си уже давным давно 7-мильными шагами идёт в немного другом направлении (по большей части это оптимизация использования ресурсов). Построение синтаксиса и вообще самой программы на SmallTalk'е позволяет фактически любому человеку дать возможность "построить" то, что необходимо ему из кирпичиков которые ему предоставлены. Если в большинстве компаний для этого приходится содержать программистов С и других языков чтобы перелопатить весь код для изменения пары строчек, то в данном случае такая необходимость частично отпадает.

З.Ы. (для тех, кто считает что С было бы лучше изучать вместо смалтолка) Если нам ничего не мешает взять Страуструпа и заняться изучением "плюсов", то SmallTalk, как бы не хотелось, самому осилить на несколько порядков сложнее. Тем не менее ещё раз напомню что курс у нас не по языку, а по ООП =)

З.З.Ы. (для тех, кого не устраивает "недостаточный функционал" ) А кто вам мешает по необходимости сделать вставки из других языков (подключить библиотеки)? Наверняка для работы с графикой, требующей высокую производительность можно было бы собрать по желанию очень неплохой "конструктор". Конечно в целом это будет практично для моделирования, а не реализации 3д-приложений, но это всё равно ускорит их разработку. проще манипулировать объектами, чем тоннами кода.

Редактировал Drednout 24.03.2011 12:02

Прислано paxeefixee 24.03.2011 19:15
#13

Drednout написал:
"построить" то, что необходимо ему из кирпичиков которые ему предоставлены

А что, если мне нужен тонкий контроль над каждым кирпичиком, что если я хочу оценить занимаемую им память, быстродействие, при желании их оптимизировать, посмотреть, что именно исполняет мой процессор после ввода высокоуровневого кода?
Или что если меня не устраивают предоставленные кирпичики? Или что если мне нужны вообще другие кирпичики? :)
Drednout написал:
А кто вам мешает по необходимости сделать вставки из других языков (подключить библиотеки)

Ну тогда уж лучше сразу писать всю программу на "вставках".
Drednout написал:
Конечно в целом это будет практично для моделирования

Вот я о том и говорил в своем посте. Специализация-то узковата, м? :)
Drednout написал:
проще манипулировать объектами, чем тоннами кода.

А объекты по-твоему из воздуха состоят? Помоему тоже из кода :)
Да и блоки кода (о ужас!) очень часто абстрагируют и представляют в виде некого объекта.

Прислано Mentor 25.03.2011 00:08
#14

Добрый день. Не берусь, правда, ответить сразу на все, вас-то побольше будет, но….

Должен сказать, что Ваша скептическая реакция предсказуема и стандартна. Если мы сейчас начнем действовать по принципу аргумент-контраргумент, то у нас получиться почти тот же самый диалог, что и у множества других людей до нас, чего мне хотелось бы избежать, ибо песня это старая – проще заглянуть в другие форумы, например,
http://community...._smalltalk
http://www.rsdn.r...82125.aspx
http://rucoders.r...
и др. - поищите сами.

Если кратко обобщить сказанное до меня, то получится примерно следующее.

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

- Любое нововведение сталкивается с инерцией мышления масс и живет по формуле
«1. Это никому не нужно! 2. Похоже, в этом что-то есть. 3. Ну это же давно известно!».

- Люди, которые разрабатывают приложения не для железа, а для человека, познакомившись со Смолтоком, остаются ему верны. Так произошло со многими сегодняшними «смолтокерами», и со мной в том числе – раньше я увлекался Delphi.

- Естественно, Смолток не панацея! Я не предлагаю его вам как универсальное средство решения всех задач, с которыми вы можете столкнуться. Я не предлагаю разрабатывать на нем ОС, драйвера, писать flash-программы (для этого есть специальные инструменты), но во многом остальном – это эффективный инструмент потому, что позволяет перенести фокус внимания разработчика с отвлекающих технических деталей (таких как ручное управление памятью) на моделирование предметной области, на описание логики работы приложения. За счет этого получается выигрыш в скорости и надежности разработки, экономятся людские ресурсы. Появившись, Смолток опередил свое время. Да, компьютеры 80-х не могли предоставить для него необходимых ресурсов, но сейчас другое время, сейчас необходимо быстро реагировать не изменения в мире, быстро создавать и модернизировать приложения.

- Сегодня для приличного программиста знать 1 язык программирования мало. Тут можно провести такую аналогию: предусмотрительные люди уже учат убойное сочетание иностранных языков – английский и китайский, ибо ожидается, что в ближайшее время носители этих языков будут доминировать в мире; так же и с программированием – если не затрагивать специфические области, то сочетание С-Smalltalk-Java тоже весьма убойное. К тому же, при необходимости, эти языки можно смешивать. Хочешь близко общаться с железом – берешь С++, хочешь больше оперировать абстракциями – берешь Smalltalk. Java тут нечто среднее между С++ и Smalltalk.

- В любом техническом ВУЗе преподается некий спектр языков программирования и моделирования. Не стоит думать, что если на прошлом курсе кто-то знакомил Вас с Delphi, то следующий преподаватель будет это продолжать. За один курс невозможно освоить любой язык программирования, но можно получить о нем основные представления, чтобы иметь возможность выбирать и двигаться дальше самостоятельно. Прочие языки моделирования, такие как AgentSpeak, среда AnyLogic, NetLogo и др, с которыми Вы можете столкнуться в нашем ВУЗе, вообще отдельная песня, но и они заимствуют идеи ООП. Задача любого ВУЗа - научить людей думать: выработать системно-концептуальное, логическое, нравственное мышление. С первым и вторым Смолток неплохо справляется.

- Да, сегодня многие «серьезные дяди» написали много приложений на C-подобных языках и Java, но не потому, эти средства лучше, а просто потому, что они им хорошо известны и рядом отсутствовали альтернативы. К сожалению, это чуть ли не доминирующий закулисный критерий выбора средства разработки. Но посмотрите на себя, сколько Вам сейчас лет? Серьезные нововведения в ИТ-сфере появляются каждый год. То, что Смолток возвращается в Россию – это факт, поэтому если Вы сейчас дадите себе труд хоть немного с ним познакомиться, то это может помочь Вам сохранить конкурентоспособность через несколько лет. К тому же, настанет такой момент, когда Вы сможете сами выбирать средство разработки, а не использовать инструмент, навязываемый работодателем.

Harrr написал:
«на серверах места нет »
и «затруднено программирование несколькими людьми одновременно.»


А Вы за это время уже успели оценить ресурсопотребление всех версий Смолтока?

Вот выдержка из http://www.hardli...1/12/1065/

«VisualAge - это мощная среда для разработки приложений для архитектуры клиент-сервер. Она ориентирована, прежде всего, на разработки бизнес-приложений, включая системы для онлайновой обработки транзакций и системы поддержки решений. VisualAge позволяет профессиональным разработчикам строить клиентские части прикладных систем со сложным графическим интерфейсом, проектировать деловую логику работы приложений с доступом к локальным и удаленным ресурсам. ….. Библиотека готовых компонент предоставляет также поддержку устройств мультимедиа, коммуникаций через протоколы APPC, TCP/IP, NetBIOS, программных интерфейсов CICS External Call Interface, EHLLAPI, Message Queue Interface (MQI), работу с реляционными базами данных семейств DB2, Oracle, Sybase и многое другое. …. отметим ряд замечательных качеств VisualAge, таких как повторное использование кода, поддержка моделей SOM и DSOM, возможности групповой разработки приложений с использованием центрального репозитория….»

Нет места на мобильных устройствах?

Вот, например, Pocket Smalltalk
http://www.pocket...ltalk.com/

А для отладки оптимизации ресурсоемких мест можно использовать профайлеры.
http://www.smallt...eedup.html

Ему находится место даже в задачах программирования PIC-микроконтроллеров
http://www.huv.co...index.html
http://www.huv.co...nload.html


Harrr написал:
«ведь мы же - будущие системные администраторы»

Если вы думаете о себе только как об администраторах – пойдите на курсы администрирования Windows и Linux, получите сертификат, и больше не о чем не думайте. Если повезет, то у Вас будет сеть компов на 50, бессонные ночи, отсутствие выходных, но зато зарплата 50к. Зачем Вам диплом?

Harrr написал:
«Все это сделано целиком и полностью в свободном ПО»

Подавляющее большинство версий Смолток распространяется свободно. Если Вы не хотите продавать свою Смолток-программу, то распространяйте по открытой лицензии, Смолток этого не запрещает.

Harrr написал:
«Вакансии Smalltalk-программистов пусть и существуют, но их в любом случае куда меньше, чем программистов на C++»

Камней больше, чем алмазов. Вы хотите стать еще одним камнем? Вы думаете С++ программистов меньше, чем вакансий для них? Их сейчас также много, как экономистов! Но из С-программистов очень трудно выбрать подходящего. Знание Смолток только плюс.

Olorin написал:
А как быть людям, которые в силу различных причин не изучали английский язык на уровне, достаточном для свободного чтения англоязычной литературы?


Извините, но в сейчас это скорее недостаток, чем оправдание. Английский нужно изучать, это просто необходимое условие получения новой информации. Я тоже свободно им не владею, приходится читать заграничные учебники со словарем.

Olorin написал:
«Но лично я, например, должен иметь какой-то источник информации помимо лекций, чтобы понимать предмет. Живой пример: на первой же лабораторной столкнулся с проблемой создания массива из N элементов»

Информации море. А Ваша проблема с массивом говорит лишь о том, что Вы невнимательно читали раздел про массивы в методичке.

SGL900 написал:
«Программируют ради удовольствия (или денег).»

В мире проводились такие эксперименты – брали 2х профессиональных программистов – одного на С++, другого на Смолток. Ставили перед ними одинаково незнакомую задачу и отводили время на ее решение. Смолтокер выигрывал. Почему? Меньше кода и ошибок на единицу функционала – он описывал решение задачи, а не управлял памятью.
Удовольствие от Смолтока больше, когда начинаешь понимать, что теперь не нужно делать того, что не относится к решению задачи.
Денег от Смолтока может быть больше, поскольку за одно и тоже время вы решите больше задач.

SGL900 написал:
«вы говорили, что на Smalltalk пишется большинство офисных приложений»,

Я говорил, что он наиболее подходит для этого класса приложений, а также систем моделирования, систем проектирования, систем поддержки принятия решений.

SGL900 написал:
«что в серьезные разработчики со знанием Smalltalk путь закрыт»

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

Harr написал:
«А еще в Smalltalk нельзя толком работать с более-менее сложной графикой, в т.ч. трехмерной»

Вы не совсем правы, в Dolphin, VisualWorks, Squeak есть серьезные графические библиотеки.
Успехи в применении графики подтверждаются также разработкой авиационного тренажера (проект Бориса Беркгаута) http://www.comput...ru/309147/ (там про него немного, но статья интересная)

P.S. Кто хочет чего-то добиться - ищет возможности, кто не хочет - причины.

С уважением, С.С.

Редактировал Mentor 27.03.2011 09:50

Прислано Mentor 25.03.2011 00:23
#15

Кстати, форум можно использовать не только для споров, но и для решения учебных вопросов из серии кому что непонятно...

Прислано Mentor 25.03.2011 08:50
#16

Доброе утро.

"30% of the worldwide market of shipping containers is controlled by Smalltalk systems"

http://en.citilab...e039re-bes

Трезвая критика Smalltalk по поводу различий между отдельными версиями
http://www.threer...log/?p=466

Refactoring Smalltalk is Easier Than Refactoring Ruby
http://futuremint...n-refactor

Смолток живет и развивается
http://joachimtuc...d-growing/

Форум поддержки пользователей VisualAge Smalltalk от производителя
http://forums.ins...m.php?f=12

Короткая, но хорошая статья "Не Дельфи единым (жив человек)"
http://www.xserve...ogr/bd/57/

Кто-то хотел литературы на русском? Тут 9 переведенных книг
http://standalone...alk/books/ - единственный для нас небольшой минус - они посвящены VisualWorks и Squeak - в России это наиболее популярные версии. Мне больше нравится VAST, уж извините ;) Однако это не снижает их ценности. Впрочем, я не буду возражать, если кто-то из Вас под впечатлением наличия литературы захочет самостоятельно (с моей помощью) поработать с VisualWorks и Squeak. Просто я буду ориентироваться на VAST - мне это сейчас проще с организационно-методических позиций...

ANSi-стандарт языка
http://wiki.squea...ndexed.pdf

Размышления одного блоггера
http://rv82.blogs...ltalk.html

Редактировал Mentor 27.03.2011 09:52

Прислано Mentor 25.03.2011 09:16
#17

ВСЕМ СМОТРЕТЬ ОБЯЗАТЕЛЬНО!

Некоторые презентации с семинара RSUG в 2009. (НА РУССКОМ)
http://www.avalon...009-10-22/

Редактировал Mentor 25.03.2011 09:18

Прислано Mentor 25.03.2011 10:00
#18

Olorin написал: я нашел одну книгу по Smalltalk на русском языке(в аттаче).


Книга хорошая, жаль, что авторы сильно затянули с ее выходом. Сейчас эту книгу можно рекомендовать как для первоначального знакомства со структурой Смолток-среды, с синтаксисом, поскольку St Express сейчас уже не используется для коммерческих приложений

Прислано harrrrr 25.03.2011 13:37
#19

По пунктам:
Фреймворков уровня великолепнейшего Qt для Smalltalk, видимо, нет, как минимум открытых. А в закрытых можно напороться на грабли а-ля дельфийское "Эта ошибка никогда не должна была произойти. Пожалуйста, обратитесь в Borland."

Приложения исполняются все-таки железом, а не человеком, к сожалению или к счастью.

C++ с железом особенно близко не общается, это к ASM или просто C.

Вторым языком сейчас куда полезнее знать тот же Python.

Pocket Smalltalk последний раз обновлялся почти 10 лет назад, на странице еще картинки с черно-белыми смартфонами.

Инструмент этот ждет своего часа уже лет двадцать как, напоминает: "Или, скажемъ, loadall въ 80286. Load'итъ абсолютно all регистры 80286. Эта команда еще ждетъ своего часа, за ней будущее, я веpю въ это. "

Этой впихнутой в одну среду сборной солянке не сравниться с целой галактикой специализированных инструментов, к примеру в области SCM из известных - Git, Hg (Mercurial), SVN, да хотя бы легковесным Fossil.

Бессонные ночи предстоят сисадмину только если он будет админить сеть целиком на Windows. А диплом МИРЭА имеет немалый вес при устройстве на работу (хотя решают все, безусловно, умения), да и в армию после военной кафедры не возьмут.

Свободное распространение =!= распространение под свободной лицензией, увы.

Алмазов, судя по HH.ru (а судить в общем-то больше особо не по чему), в России вообще нет. Точнее, вставлять их некуда, в отличие от. И у меня нет ни одного знакомого сишника, да чего уж там, даже дельфиста, который бы не смог найти хорошо оплачиваемую работу.

Сайт с теми микроконтроллерами последний раз обновлялся 6 лет назад. Вспомнился еще робот Томми, который разбился, будучи под управлением Java. В общем-то это намекает на то, что что-то кроме C\C++ использовать в работе с железом весьма чревато. Кроме того, есть простой в освоении и гибкий Arduino, который произвел революцию в любительской электронике.

Насчет английского согласен, да.

Системы принятия решений и моделирования на Smalltalk тоже писать, возможно, реально, ибо там не всегда нужно на бешеной скорости перелопачивать не менее бешеные объемы данных, при этом проводя над ними опять-таки бешеной сложности операции.

Видео какого-то 3D через OpenGL на Smalltalk, посмотрел, страх и ужас. http://www.cincom...3416169962 Если это на первой странице Гугла по запросу "visualworks smalltalk 3d graphics", то комментарии, по-моему излишни. Шейдеры, судя опять-таки по гуглу, ни одна из трех названных сред не поддерживает в принципе, о каком современном 3D можно вообще говорить? Между прочим, тренажеры бывают минимум двух видов - максимально реалистичные и те, что графикой похожи на Elite восьмидесятых, а скриншотов в статье, увы, не показали.

Литературы по одному Qt на Амазоне (а лучше показателя, пожалуй, нет) в ~шесть раз больше, чем по всему Smalltalk.

Презентации не особенно впечатлили, еще и флеш пришлось ставить, чтобы посмотреть.

Редактировал harrrrr 25.03.2011 13:40

Прислано Mentor 25.03.2011 14:48
#20

Уважаемый harrrrr, подобные выступления есть диалог не конструктивный. При желании можно раскритиковать все что угодно - для пессимиста стакан наполовину пуст, для оптимиста наполовину полон. Тот же C# многие пинают за огромный размер получаемых приложений. Первую половину моего поста http://itv09.org/...#post_1287 Вы удачно пропустили и продолжаете лезть в бутылку.

А если говорить про "перелопачивать бешеные объемы данных" да еще и удаленно, то это вообще лучше делать при помощи мобильных агентов, которых, кстати, тоже можно писать как на Jave, так и на Смолтоке.

Редактировал Mentor 25.03.2011 15:07

Прислано Mentor 26.03.2011 23:59
#21

Я бы хотел использовать ваш форум не для того, чтобы поспорить стоит или не стоит использовать Смолток. Это будет вечный спор из серии какой английский лучше - тот, на котором говорят в Англии, или тот, на котором в Австралии (вроде бы в Англии была заложена идея языка, но поехать мы хотим в Австралию). Несогласный всегда будет замечать недостатки и отворачиваться от достоинств. Наш курс все-таки называется ООП, а ООП фактически началось со Смолтока. Поэтому, чтобы не изучать английский Австралии, давайте обратим внимание на достоинства Смолтока и будем иметь их ввиду в будущем. То, что язык не мертвый мы уже выяснили, а то, что по недоразумению в России его мало знают - поправимо при помощи институтов. К тому же у вас это редкий шанс - С и прочее гораздо проще изучить самостоятельно, а тут все-таки может пригодиться преподаватель.:)
Я бы хотел использовать форум для компенсации потерянного учебного времени и для повышения оперативности работы, поскольку у нас слишком много занятий уже пропало. Я предполагал выкладывать сюда учебный материал и отвечать на вопросы, если вы не против.

На досуге можете подумать, почему уже 75 лет существует математика от Бурбаки? С виду она запутанная, непонятная, подавляющая часть планеты ею не пользуется. Однако про нее вспоминают при первом же подходящем под ее идеологию случае..

Редактировал Mentor 27.03.2011 08:48

Прислано Mentor 27.03.2011 13:49
#22

По-возможности буду выкладывать различные инструкции, методички, примеры. Вопросы и замечания по их содержанию приветствуются.

Вот для начала
- краткая инструкция по установке VAST;
- инструкция по созданию приложения и элементарным манипуляциям над ним

Редактировал Mentor 28.03.2011 10:42

Прислано paxeefixee 27.03.2011 22:24
#23

И снова здравствуйте, Mentor.
Рад, что вы перевели тему в несколько другое русло и поделились с нами ценными материалами. Я хотел предложить создать для этого чрезвычайно полезного действия другую тему, вроде "Информация и материалы для изучающих курс ООП и язык Smalltalk", но к сожалению не успел.

Потому, что все-таки очень хотелось сделать еще несколько отметок в рамках нашей дискуссии о языке Smalltalk. Например:
Mentor написал:
Если вы пол жизни оттачивали мастерство использования какого-то инструмента, преуспели в этом и вам хорошо, то ваше сознание будет инертно к новому, вы будете изо всех сил противится этому новому, даже если это новое лучше вашего инструмента...
Любое нововведение сталкивается с инерцией мышления масс и живет по формуле
«1. Это никому не нужно! 2. Похоже, в этом что-то есть. 3. Ну это же давно известно!».

Что же, ваш жизненный опыт безусловно богаче нашего. Возможно, что все это так, но ведь на ты мы всего лишь и люди, хоть и не всю жизнь, но довольно значительное время оттачивавшие "мастерство владения инструментом", посему согласно вашему опыту и нас не избежит участь пройти эти три этапа :)
И мне кажется, что порой необходимо, чтобы переход к этому новому был как можно более плавным, но ведь Smalltalk же ведь не оставляет особых альтернатив, верно?
Mentor написал:
сейчас необходимо быстро реагировать не изменения в мире, быстро создавать и модернизировать приложения.

Бесспорно, но создавать и модернизировать приложения много проще, когда есть "зацепки", которые бы помогли разработчику в этом.
Mentor написал:
то сочетание С-Smalltalk-Java тоже весьма убойное

А Smalltalk здесь играет роль лишь части сочетания.
Mentor написал:
Да, сегодня многие «серьезные дяди» написали много приложений на C-подобных языках и Java, но не потому, эти средства лучше, а просто потому, что они им хорошо известны и рядом отсутствовали альтернативы.

По-моему много чаще эти средства действительно лучше. А если учесть что C-подобные языки появляются и по сей день, и появились далеко не вчера, то я думаю что альтернативы вполне себе были, и дело далеко не только в инертности мышления.

Насчет Smalltalk-а для сервера - да приложения для архитектуры клиент-сервер можно писать и на Ассемблере, и на Brainfuck, и на Java, да что угодно можно к этому прикрутить. Вопрос в другом - зачем? Целесообразно и достаточно ли эффективно ли будет это?
Насколько я знаю, приложения на Smalltalk под большинством сред разработки компилируются в байт-код. Я думаю, бессмысленно сравнивать скорость его выполнения (что для сколько-нибудь нагруженных серверов довольно критично) с хорошо оптимизированном под задачи и архитектуру сервера машинном кодом - ответ очевиден (хотя тут самое время вспомнить про JIT, но я не знаю, насколько его реализация хороша для каких-либо реализаций Смоллтока).
Си-подобные языки (я уж умолчу о все том же Ассемблере) как раз и предоставляют множество возможностей для тонкой оптимизации за счет хотя бы того же прямого доступа к памяти.

Про Pocket Smalltalk и Smalltalk для микроконтроллеров могу сказать то же самое (где скорость и оптимизированость тоже весьма важны ввиду ограниченности ресурсов) - можно, но целесообразно ли?

Отвлечемся немного от этого и посмотрим на вещи более насущные -
Mentor написал:
Зачем Вам диплом?

Но найти хорошую, достойно оплачиваемую работу и перспективы без диплома трудновато будет, или я чего-то не вполне понимаю? :)
Mentor написал:
Камней больше, чем алмазов. Вы хотите стать еще одним камнем? Вы думаете С-программистов меньше, чем вакансий для них? Их сейчас также много, как экономистов! Но из С-программистов очень трудно выбрать подходящего. Знание Смолток только плюс.

Зачем же вы так, обижаете миллионы человек разом :(
Знание Smalltalk - это конечно наверное плюс. Но для текущего работодателя знание Java/C# по-моему было бы бОльшим, более очевидным плюсом, и к сожалению, я не знаю, чего именно может потребовать работодатель завтрашний.
Mentor написал:
В мире проводились такие эксперименты – брали 2х профессиональных программистов – одного на С , другого на Смолток. Ставили перед ними одинаково незнакомую задачу и отводили время на ее решение. Смолтокер выигрывал. Почему? Меньше кода и ошибок на единицу функционала – он описывал решение задачи, а не управлял памятью.

Прекрасно, что же еще сказать. Только по-моему это было также продиктовано возможной малой ограниченностью ресурсов вычислительной системы и отсутствия в постановке задачи условий, ограничивавших их или скорость работы программы, к примеру. Также мне кажется, что немало помогало то, что просто многое из того, что использовал смолтокер, было просто хорошо реализовано до него в среде. Если сравнивалась ценность этих программистов - то по-моему способность реализовать такие вещи ставила бы знания Си-программиста несколько выше.
Интересно посмотреть на подробное описание и результаты этого теста, не подскажете где их можно найти?

Mentor написал:
Кто хочет чего-то добиться - ищет возможности, кто не хочет - причины.

Да, и порой хочется, чтобы возможности как можно больше покрывали возникающие на дороге причины.

Mentor написал:
Тот же C# многие пинают за огромный размер получаемых приложений

А Smalltalk может похвастаться малым размером приложений? Не байт-кодов, а именно уже машинного кода?
К тому же критиковать могли приложения на C#, скомпилированные для .NET, а там отнюдь не машинный код целевой архитектуры, а всего лишь код MSIL, который также исполняется виртуальной машиной.
Мне кажется если сравнивать байт-коды, то их размер зависит лишь от специфики конкретной виртуальной машины.
В какой-то из них наверняка можно написать нечто вроде "CNTCSTR 0x1234" для подсчета кол-ва символов в строке по адресу 0x1234, а в какой-то придется "руками" пробегаться по строке и искать 0x00 (для строки в стиле C), увеличивая счетчик.

Мы не хотим сказать, что Smalltalk плох и ни на что не годен, будучи знакомыми с ним пока лишь поверхностно. Мы не хотим "лезть в бутылку" только процедурных языков. Мы не против концепций ООП. Мы не хотим оскорбить вас, в конце концов.
Мы лишь хотим увидеть благое настоящее и твердые перспективы, а также причины, по которым нам столь необходимо в рамках курса ООП изучать именно язык Smalltalk, а не языки, с которыми "хоть куда" и "хоть сейчас".
Если сказал лишнего за остальных - простите, но по крайней мере мне хотелось бы именно этого. :)

Редактировал paxeefixee 27.03.2011 22:42

Прислано Mentor 28.03.2011 08:00
#24

DASM32 написал:
Smalltalk же ведь не оставляет особых альтернатив, верно?

А Smalltalk здесь играет роль лишь части сочетания.

Вы все время впадаете в крайности. Видимо, это проявление максимализма Вашего :)
Еще раз: я НЕ говорю "Встаньте, идите и программируйте всю жизнь только на Смолтоке!".
Но я говорю: давайте в рамках курса познакомимся со Смолтоком, поскольку у него много своих достоинств, чтобы вы имели возможность выбирать наиболее подходящий инструмент. Почему в рамках этого курса? Потому, что многие из вас и так знакомы с другими языками, а этот бессознательно и не заслуженно обходится вниманием.

DASM32 написал:
По-моему много чаще эти средства действительно лучше. А если учесть что C-подобные языки появляются и по сей день, и появились далеко не вчера, то я думаю что альтернативы вполне себе были, и дело далеко не только в инертности мышления.


Оценка "лучше". Подразумевает наличие критериев оценки. Наиболее частые критерии это: скорость исполнения, доступ к аппаратуре, скорость разработки, удобство разработки. Увы, но в системах разработки первые 2а очень трудно сочетаются с последними 2мя. У Смолтока акцент на последние 2 (закономерность из серии время-деньги). Поэтому то, что у С достоинство, нельзя ставить Смолтоку в недостаток, и наоборот. К тому же, есть реализации (Dolphin), которые по быстродействию не сильно отстают от С.

DASM32 написал:
Про Pocket Smalltalk и Smalltalk для микроконтроллеров могу сказать то же самое (где скорость и оптимизированость тоже весьма важны ввиду ограниченности ресурсов) - можно, но целесообразно ли?

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

DASM32 написал:
Знание Smalltalk - это конечно наверное плюс. Но для текущего работодателя знание Java/C# по-моему было бы бОльшим, более очевидным плюсом, и к сожалению, я не знаю, чего именно может потребовать работодатель завтрашний.

- Зачем нам комбайны, барин? Они уродуют нашу землю! Земля живая, мы должны копать ее лопатами, поливая потом и кровью, выбирая камни и корневища, только тогда она даст урожай!
- Хорошо, Прохор, вот тебе лопата, пожалуйста, вскопай эти 3 гектара сегодня к вечеру...
- :o

DASM32 написал:
...
Интересно посмотреть на подробное описание и результаты этого теста, не подскажете где их можно найти?


Потерял ссылку, найду - покажу. "Реализовано до него" - значит до него придумано, осознано как необходимость, предоставлено в использование. Так это же здорово! Пожалуйста, реализуйте для С все, что реализовано в Смолтоке, Прологе, Хаскеле, добейтесь максимальных показателей по всем критериям - чтобы и быстро, и полный контроль, и естественно для человека - и Вам поставят памятник, будут почитать как разработчика самой лучшей системы программирования.
В Смолтоке реализованы всевозможные удачные универсальные абстракции такие, как наборы и обобщенные сообщения итераций над ними. За счет подобных вещей удается минимизировать размер кода...

Вот, например, небольшой примерчик: Paskal VS Smalltalk VS Java.

Задача: Написать программу, которая подсчитывает количество повторений каждой буквы во введенной строке и выводит количество повторений.

Pascal
Код

program frequency
const
    size = 80;
var
     s: string[size];
     i: integer;
     c: char;
     f: array[1..26] of integer;
     k: integer;
begin
     writeln('enter line');
     readln(s);
     for i := 1 to 26 do  f[i] := 0;
     for i := 1 to size do
   begin
           c : = asLowerCase(s[i]);
           if isLetter(c) then
              begin
                 k := ord(c) - ord('a') + 1;
                f[k] := f[k] + 1
             end
   end;
for i := 1 to 26 do write(f[i], ' ')
end.




Java

Код

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class Parser
{ private static Map<Character, Integer> chars = new HashMap<Character, Integer>();
 
   public static void main(String[] args) throws IOException
  {
   BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
   String str = "";
   str = in.readLine();
   checkString(str);
   }

  private static void checkString(String str)
  { for(int i = 0; i< str.length();i++)
   { if(!Character.isDigit(str.charAt(i)))
    { if(chars.containsKey(str.charAt(i)))
     { chars.put(str.charAt(i), chars.get(str.charAt(i))+1);
      }else
     { chars.put(str.charAt(i), 1);
     }
    }
  }
for(Entry<Character, Integer> e : chars.entrySet()){ System.out.println(e.getKey()+ ":"+e.getValue()); }
}

}






Smalltalk
Код

| s f |
s := (CwPrompter prompt: 'Введите строку' default: '') asLowercase.
f := Set new.
s do:
      [ :c |
          c isLetter ifTrue: [f add: c asString, ' встречается ', (s occurrencesOf:c) asString,' раз'
                                  ]
      ].
^f





Если просто подсчитать строки кода, даже с учетом красивого оформления, то у Смолтока ровно в 3 раза меньше кода.

Mentor написал:
Тот же C# многие пинают за огромный размер получаемых приложений

DASM32 написал:
А Smalltalk может похвастаться малым размером приложений? Не байт-кодов, а именно уже машинного кода?


Размер приложения под виртуальную машину включает также и размер самой виртуальной машины, но ее размер суммируется единожды.
Про С#, а также про Java в этом же смысле, я упоминал, чтобы подчеркнуть - большой размер приложения как критерий часто не рассматривается благодаря достоинствам виртуальной машины.

DASM32 написал: Мы не хотим оскорбить вас, в конце концов.

Спасибо, надеюсь Ваше желание не изменится.

DASM32 написал: благое настоящее и твердые перспективы


Настоящее у нас не совсем благое (Фукусима, Ливия и прочее к лету всему миру аукнется), а перспективы в нашей стране всегда расплывчаты. Так что учитесь всему, что можно. Самое ценное из этой жизни Вы сможете унести только в своем сознании - тренируйте его.

DASM32 написал: а также причины, по которым нам столь необходимо в рамках курса ООП изучать именно язык Smalltalk


Пока я только про это и говорю. А что Вы скажете, когда в рамках функционального и логического программирования Вам будут рассказывать про Пролог и Хаскель? Ваш скепсис под них тоже подходит, однако они живут, используются и решают свои задачи. Каждому инструменту свое место - использовать везде один универсальный язык - возможно, но дорого и не рационально, поэтому так никто не поступает, поэтому Вас в институте учат разным вещам.


Прилагаю очередной файл с описанием основных инструментов VAST.

P.S. Кстати, только что закончилась ежегодная конференция Smalltalk Solutions 2011
http://www.stic.s...ce-agenda/

Редактировал Mentor 28.03.2011 12:23

Прислано Mentor 28.03.2011 17:14
#25

Смолток-фольклор: песенка про MVC
http://vst.ensm-d...r/noury/20

Прислано redline 28.03.2011 22:15
#26

Привет участникам дискуссии.
Мне кажется пример с реализацией простейшего алгоритма, как показатель скорости написания листинга или его размера в зависимости от выбора языка некорректен. Хотя тоже весьма показателен.
Хотелось бы отметить, что под разные классы задач используют разные языки, где учитываются все ньюансы для достижения наилучшего решения.
Вопрос читабельности или нечитабельности синтаксиса не считаю актуальным. На этом не стоит делать акцент.
А вот к скорости написания надо подробнее.
Если обратится к самым распространенным задачам - клиент- серверным. Можно выделить 2-3 крупные подзадачи:
- Система безопасности
- работа с БД
- работа с графикой
Ведь любая система не ограничивается взаимодействием внутренних структур данных между собой. Где написание алгоритма заняло условно на 5 минут быстрее, а то вот заставить работать вместе все компоненты системы на неделю дольше.
Так же вопрос тестирования всей системы.
Так же вопрос многопоточности приложения.
Если брать язык java то есть готовые компоненты для систем, куча туториалов и вопрос скорости освоения минимален.
Что есть у smaltalk? И какова скорость освоения?
Ведь не зря говорят: Время - деньги.
Оффтоп: Регистрация тут - ахтунг. Capture - жесть. Не сохранение введенных данных - жесть. Вообщем целый квест для регистрации.

Редактировал redline 28.03.2011 22:18

Прислано paxeefixee 30.03.2011 07:01
#27

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

Что же, прекрасно, но я думаю что все равно сгенерированный компилятором объектно-ориентированный к тому же код будет всяко менее оптимизирован, чем написанный на языках, которые позволяют "ближе" оперировать данным им оборудованием.
Mentor написал:
- Зачем нам комбайны, барин? Они уродуют нашу землю! Земля живая, мы должны копать ее лопатами, поливая потом и кровью, выбирая камни и корневища, только тогда она даст урожай!
- Хорошо, Прохор, вот тебе лопата, пожалуйста, вскопай эти 3 гектара сегодня к вечеру...
- :o

К сожалению, не уверен, что вполне понял данный "отрывок". Если вы имеете ввиду что комбайн - Smalltalk, а лопата - С++, то выходит дело что вы тоже меня не вполне поняли. Я же не говорил, что Smalltalk бесполезен, я лишь говорил что его специализация кажется мне узковатой. На поле комбайн подойдет, а например для раскопок марсианского/лунного грунта я думаю врятли.
Mentor написал:
Потерял ссылку, найду - покажу. "Реализовано до него" - значит до него придумано, осознано как необходимость, предоставлено в использование. Так это же здорово! Пожалуйста, реализуйте для С все, что реализовано в Смолтоке, Прологе, Хаскеле, добейтесь максимальных показателей по всем критериям - чтобы и быстро, и полный контроль, и естественно для человека - и Вам поставят памятник, будут почитать как разработчика самой лучшей системы программирования.

Так уже реализовано до меня :)
И да - помоему за универсальность разработанных кусочков кода мы зачастую расплачиваемся тем же быстродействием и оптимизированностью под текущую задачу, не так ли?
Mentor написал:
Если просто подсчитать строки кода, даже с учетом красивого оформления, то у Смолтока ровно в 3 раза меньше кода.

Хорошо. Perl:
Код

map $a{$_}++,<>=~m/(\w)/g;
print map "$_:$a{$_}\n",keys %a



Без использования приколов и грязных приемчиков вроде eval(), base64 и gzip.
Помоему тут количество кода сильно зависит от кол-ва операций, уже реализованных создателями интерпретатора, вроде готовой occurrencesOf в вашем коде, наличие которых к тому же, как мне кажется, зависит от среды.
Mentor написал:
большой размер приложения как критерий часто не рассматривается благодаря достоинствам виртуальной машины.

Но тем не менее вы употребили этот довод.
И насчет размеров - я уже приводил пример, как размер самого кода может быть меньше в зависимости от самой виртуальной машины. Я спрашивал о размере выходного кода, исполняемого уже нашим процессором.
Mentor написал:
Настоящее у нас не совсем благое (Фукусима, Ливия и прочее к лету всему миру аукнется), а перспективы в нашей стране всегда расплывчаты.

Нуу, тут я говорил о нашем "программистском" настоящем и будущем, о знаниях.

Насчет Пролога и Хаскеля - к сожалению, не могу ничего сказать, не знаю их. Вот если буду изучать - тогда будет, что сказать :)
Mentor написал:
использовать везде один универсальный язык - возможно, но дорого и не рационально, поэтому так никто не поступает, поэтому Вас в институте учат разным вещам.

Именно потому имеется не только язык С/С++, а превеликое множество подобных им :)

redline, рады, что вы прошли данный квест с Captcha :)
Насчет сохранения данных - посмотрю, спасибо за замечание.

Редактировал paxeefixee 30.03.2011 12:49

Прислано Mentor 04.04.2011 15:14
#28

Здравствуйте.
Спасибо всем за заданные вопросы, но давайте пока отложим демагогию.
Времени остается мало, жизнь слишком коротка, чтобы тратить ее на споры - можно проспорить и ничего не сделать, а можно поверить и успеть многое. Это особенно замечаешь, когда начинают уходить близкие люди.

http://mmcs.sfedu...16----/95-

По указанной ссылке (в конце страницы) находятся 2 свежих пособия 2007-08 годов нашего соотечественника Ю.А. Кирютенко, посвященные как общей идеологии Смолтока, так и его конкретной реализации - среде VisualWorks.

Эти книги во многом для нас полезны, не смотря на то, что мы занимаемся VAST.
Думаю стоит присовокупить данную литературу к файловому архиву - ссылка не всегда работает (если не работает, я пришлю).

Редактировал Mentor 04.04.2011 15:15

Прислано Mentor 04.04.2011 23:04
#29

Выкладываю фрагмент руководства по визуальному программированию.
Продолжение следует...

Прислано Mentor 08.04.2011 14:51
#30

Выкладываю содержательно законченную редакцию инструкции "Основы визуального программирования в среде VAST. Часть 1 (Версия 2)"

С уважением, С.С

Прислано Mentor 12.04.2011 12:29
#31

Выкладываю пример исполнения и оформления отчета по лабораторной работе №2.

ВНИМАНИЕ: Завтра возможны изменения в расписании. Приходите к 3-ей паре сразу на кафедру.

Прислано Mentor 13.04.2011 14:27
#32

Решение проблемы, обнаруженной на последнем практическом занятии...

Прислано Mentor 19.04.2011 15:54
#33

20.04.11 Лекция состоится на кафедре..
С уважением, С.С

Прислано Mentor 22.04.2011 10:35
#34

Пара роликов о том, как можно оперировать вспомогательными окнами приложения..

Прислано Mentor 27.04.2011 08:05
#35

Добрый день.
Я похоже сегодня несколько опоздаю, приходите сразу на кафедру.
С уважением, С.С

Прислано Mentor 01.05.2011 13:49
#36

Нашел книгу Т. Бадда про ООП, в которой Smalltalk рассматривается параллельно с С++, Java, Object Paskal и др. (Для подготовки к экзамену и вообще. Сохраните в архиве..)

Ну и конечно следует почитать Буча (тоже прилагается)...

Редактировал Mentor 03.05.2011 13:39

Прислано Mentor 01.05.2011 13:50
#37

Пример про робота и как его смотреть...

Редактировал Mentor 01.05.2011 13:52

Прислано HARM_x64 02.05.2011 13:48
#38

Если кто может, напишите просто как экспортировать и импортировать приложения в VAST

Прислано Mentor 02.05.2011 22:00
#39

Кино про то, как импортировать-экспортировать приложения...

Прислано Olorin 03.05.2011 10:27
#40

Сергей Сергеевич, что с динамическим добавлением элементов? Без него обойтись?

Редактировал Olorin 03.05.2011 10:28

Прислано Mentor 03.05.2011 15:59
#41

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

Прислано Saraf 03.05.2011 18:16
#42

Сергей Сергеевич, при импорте приложения в Smalltalk выбивает такую ошибку:

Код
Hooking up image Development to C:\Program Files\Instantiations\VA Smalltalk\8.0\manager\mgr80.dat.
done.
Importing from C:\Documents and Settings\Пользователь\Рабочий стол\Y\ООП\Saraf.dat into C:\Program Files\Instantiations\VA Smalltalk\8.0\manager\mgr80.dat
***Do not halt or terminate this process***
Execute  EmLibrary startUp  if a problem occurs


Finished importing from C:\Documents and Settings\Пользователь\Рабочий стол\Y\ООП\Saraf.dat




И выдает сообщение:
Код
There are no applications in this library.




Это неправильный экспорт был сделан? Ради интереса попросил чужую лабу, с тем же результатом вылетает. Кино по экспорту\импорту смотрел, вроде и экспорт сделан был правильно, и импортирую как надо.

Файлик приложил на всякий:

Редактировал Saraf 03.05.2011 18:28

Прислано Mentor 03.05.2011 19:17
#43

Однозначно ошибка при экспорте. Размер файла с приложением не бывает меньше 100кб. У Вас 1кб.

Пример про робота устанавливать пробовали?

Редактировал Mentor 03.05.2011 19:20

Прислано Saraf 03.05.2011 20:20
#44

Да, с роботом все в порядке.
Придется завтра экспортировать все заново

Прислано Saraf 10.05.2011 14:07
#45

Сергей Сергеевич, Smalltalk нанес ответный удар.
Импорт приложения прошел успешно, но при попытке его загрузить вылетает окошко:

s46.radikal.ru/i113/1105/85/0a271fc381f3.jpg
Естественно, я так просто не сдаюсь и жму Yes, но VA тоже не прост и сообщает мне, что

i031.radikal.ru/1105/b7/c29ac17844db.jpg
после чего загрузка приложения прекращается.


Нет нужной части в библиотеке, где ее взять?

Сам файлик прикладываю.

Редактировал Saraf 10.05.2011 14:12

Прислано Mentor 18.05.2011 15:44
#46

Пример игры с фишками.
Перед запуском необходимо в методе init исправить путь к файлу 15pics.obj.

Прислано 534 24.05.2011 07:57
#47

и пример оформления курсача тоже скиньте плз

Прислано 534 26.05.2011 20:39
#48

Попросите же пожалуйста чтобы SGL900 выложил пример оформления курсача по ООП, который он фоткал

Mentor,
скажите пожалуйста, когда у нас будет занятие на следующей неделе

Прислано SGL900 27.05.2011 20:11
#49

Вот пример курсача про кофе.

Редактировал SGL900 27.05.2011 20:11

Прислано 534 30.05.2011 12:20
#50

Cергей Сергеевич, когда у нас будет занятие то??

Прислано Mentor 30.05.2011 20:38
#51

В среду встречаемся...

Прислано Mentor 30.05.2011 20:51
#52

Кстати, задача про запуск трех ракет - Протон М, Союз 2, FALCON 9, предъявленная мне на прошлом занятии, является плагиатом. Она списана у студента группы ИТО-1-08 Зинде Ивана. Плагиаторы (3 человека, сами знаете кто) приобрели "негативную карму". Их дальнейшая судьба зависит от степени их покаяния и качества реализации собственной задачи...
С уважением, Mentor


P/S Комментарии по ходу инцидента: несмотря на то, что авторство данной работы продолжает оставлять определенные сомнения, "плагиаторы" продемонстрировали довольно высокий уровень понимания на примере модификации спорного проекта. "Негативная карма" снимается.

Редактировал Mentor 01.06.2011 14:34

Прислано nbnp 31.05.2011 07:51
#53

:-DD

Прислано BuHTOPE3 31.05.2011 11:08
#54

ахаха лол
моя личная ОС (курсач), работающая исключительно на смолтоке практически готова.... Идея уже есть;)

Прислано Mentor 01.06.2011 07:55
#55

Примеры программ с простой графикой и на использование WinAPI

Прислано dhmhd 01.06.2011 08:17
#56

Елки-палки:). Всю ночь сидел, пытался разобраться, искал... Как же работать с моим любимым WinAPI... Спасибо, Сергей Сергеевич.

winapitest v1.1 повесил vast наглухо...

Редактировал dhmhd 01.06.2011 08:22

Прислано Mentor 01.06.2011 15:21
#57

To dhmhd.

Относительно отображения рисунка при запуске. Тут все просто - необходимо явно вызывать метод рисования после инициализации (см. связь, обведенную красным на рисунке). Далее метод рисования вызывается при перерисовке экрана через expose...

Редактировал Mentor 01.06.2011 16:08

Прислано Mentor 01.06.2011 15:25
#58

dhmhd написал:
Елки-палки:). Всю ночь сидел, пытался разобраться, искал... Как же работать с моим любимым WinAPI... Спасибо, Сергей Сергеевич.

winapitest v1.1 повесил vast наглухо...


Забыл сказать, что нужно исправить путь к блокноту в экзекуторе...

Прислано Mentor 01.06.2011 16:07
#59

Пример отображения BMP-файла в области для рисования (Drawing Area).
Программа получена путем модификации приложения PaintSquare, в котором оставлено только то, что нужно для отображения картинки.
Таким образом, PaintSquare1.0 - рисует квадрат, PaintSquare1.1 - отображает картинку.
Перед запуском необходимо отредактировать путь к файлу в методе init.

Прислано BuHTOPE3 01.06.2011 16:57
#60

Вопрос следующий. В примере про пятнашки в редакторе кода выбираем категорию Graphic, в ней showPosition. Насколько я понимаю, в ней идёт непосредственное заполнение поля фишками, у меня с SGL900 похожая ситуация но я не особо понимаю следующее: чтобы что-то размножить, это что-то (таже фишка, в нашем случае она сделана в .bmp) нужно указать. В showposition этого обращения к объекту нет. Или экспорт изображения и его последующая привязка к коду идут как-то иначе? Ибо я как таковой не могу создать в паблике ничего, кроме инициализации и центрирования основного окна /см Виджета/

Прислано BuHTOPE3 01.06.2011 17:10
#61

с этим разобрался вроде после курения примера

Прислано Mentor 01.06.2011 17:23
#62

Хорошо, тогда поясню еще раз для остальных:
Изображения загружаются в методе init выражением
Код
pixmaps:=ObjectLoader new loadFromFile:'D:\15pics.obj'.



В данном файле изображение хранятся в формате CgDeviceIndependentImage, в который преобразуются автоматически при загрузке из bmp файлов
(файл 15pics.obj был подготовлен заранее).
Далее происходит преобразование картинок в карты пикселей выражением
Код

1 to:15 do:
[:i|
   pixmaps at:i put:((pixmaps at:i) asPixmap)
].




Собственно вывод картинок на экран производится в методе showPosition выражением
Код
(pixmaps at:(position at:pos)) copyArea: winCg
                gc: gc
               srcX:0
               srcY: 0
               width: w
               height: h
               destX: delta1
               destY: delta2.




Прислано BuHTOPE3 02.06.2011 06:58
#63

(файл 15pics.obj был подготовлен заранее).

получается, что вся необходимая для работы графика должна быть в нём? Если да, то каким образом её туда загнать? А если нет, то я до сих пор не понял.

Создаю связь окна со скриптом, в скрипте пишу

winCg:=(self subpartNamed: 'Drawing Area1') widget window.

gc := winCg createGC: None values: nil.

pic:=CgWinBMPFileFormat new loadFromFile:'C:\Users\At0m\Desktop\OOP\walle.bmp
ясен пень, что меня посылают, ибо не берет он оттуда изображение

Прислано dhmhd 02.06.2011 16:07
#64

Сергей Сергеевич, будете ли вы в пятницу в институте? Если будете, то во сколько к вам можно будет подойти и где вас искать?

Редактировал dhmhd 02.06.2011 16:08

Прислано Mentor 02.06.2011 16:15
#65

To BuHTOPE3
В пятнашках я просто для удобства собрал 16 изображений из отдельных bmp файлов в 1 файл. Этого можно было и не делать.
Выражение CgWinBMPFileFormat new loadFromFile:'file.bmp' загружает file.bmp и преобразует его сразу в CgDeviceIndependentImage.
Далее, если объект CgDeviceIndependentImage преобразовать в Pixmap (asPixmap), то его можно будет скопировать в графическую область.

А почему "ясен пень" то?

Прислано Mentor 02.06.2011 16:17
#66

To dhmhd
Планирую быть с 13.00 на кафедре

Прислано dhmhd 02.06.2011 16:32
#67

Глупый вопрос, наверное... К курсовой должена ведь прилагаться РПЗ... Как её оформлять?

Прислано Mentor 02.06.2011 17:47
#68

1. Титульный
2. Содержание
3. Словесная постановка задачи
4. Концептуальный анализ предметной области по методике анализа структур действий (см. лекции).
5. Описание полученной концептуальной модели.
6. Отображение концептуальной модели в объектную.
7. Описание визуальной композиции (скриншоты с описанием связей)
8. Коды реализованных классов и их методов (с необходимыми комментариями)
9. Тестирование

Неплохой пример был уже выложен http://itv09.org/...etfile=376
в нем есть все, кроме 1,2,3,7,9.
Пункт 7 делать аналогично лабе 2

Прислано harrrrr 02.06.2011 18:51
#69

Хоть и с опозданием, но тем не менее - Пентагон тихо и незаметно похоронил систему на Smalltalk. Пруф - http://forums.ins...amp;t=5540 Another one bites the dust, ожидаемо.

Прислано Mentor 02.06.2011 20:40
#70

"The cancellation is political. - читайте внимательнее статью.
В ней лишь говорится о том, что Пентагон потерял, приняв такое решение.
По политическим соображениям зарубаются многие хорошие проекты, иначе говоря - пробки чаще возникают на тех дорогах, вдоль которых стоят магазины, поддерживаемые текущей властью...
Например, ЯК-141 не пошел в серию именно потому, что был слишком хорошим для разваливающегося государства...

Прислано Mentor 03.06.2011 17:31
#71

Уважаемый dhmhd сделал чудесный курсовой! Давайте его поздравим! :beer:
За это время я выиграл всего 3 раза!

Прислано paxeefixee 03.06.2011 17:41
#72

Mentor, он её обещал сегодня выложить. Ждем-с :)

Прислано Mentor 04.06.2011 10:10
#73

dhmhd, а может имеет смысл внести в алгоритм элемент случайности или элемент самообучения? А то после нахождения стратегии проиграть уже невозможно - выигрываешь либо, за 6 либо за 8 ходов... :)

Редактировал Mentor 04.06.2011 10:10

Прислано dhmhd 04.06.2011 17:35
#74

Спасибо, Mentor. Да, я обязательно подумаю, над тем как можно усовершенствать бота. Обучением я не хочу заниматься, потому что в данной задаче мне это не интересно. Просто игра такая... Как и крестики-нолики, детерминированная полностью. Потому действительно надо просто внести немножко стохастичности.

Вот, DASM32, специально для тебя извергнутый vast'ом исполняемый файл. Там exe который, очевидно, "запускает"(просто не знаю как правильно сказать:)) файлик icx. Короче вот.
Для запуска потребует библиотеки vast'а... Если что я их могу выложить.

Если кому интересны исходники, то вот они.

Прислано dhmhd 04.06.2011 19:18
#75

Изменил немножко... Выбирает произвольный вариант из списка "лучших" ходов.

Прислано paxeefixee 04.06.2011 21:21
#76

dhmhd написал:
Для запуска потребует библиотеки vastа...

Оу... А какие именно? Или полностью установленный VAST нужен?

Прислано dhmhd 05.06.2011 09:59
#77

Вот, попробуй.

Прислано dhmhd 05.06.2011 19:44
#78

Mentor, я переделал все заново в соответствии с моим новым пониманием того, как приложение должно выглядеть на "маленьком говоруне". Вынес "AI" в отдельный класс. Вынес саму игру в отдельный класс. Сделал класс игрока. Обзавелся новой небольшой проблемой связанной с мерцинием картинки. Пока решать ее не стал... Решил отложить до лучших времен. Теперь "AI" может играть сам с собой. Есть один баг, который я никак не могу устранить. Когда AI забивает гол, ему прибавляется не одно, а два очка... Вот такой он, ска, читер... Хотелось бы услышать маши комментарии. Заранее спасибо.

Прислано Mentor 06.06.2011 05:15
#79

Хорошо, я у нее спрошу...

Прислано Mentor 06.06.2011 05:44
#80

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

Мерцание происходит благодаря процессу
Код
drawprocess:=[
   [true] whileTrue: [
      area clearWindow.
      self signalEvent: #drawReq.
      (Delay forMilliseconds: 100) wait.
            ].
               ] fork.





в методе initMainWindow. Не понятно, почему Вы так решили поступить, перерисовку нужно делать по событиям мыши и по событию exposed...

Прислано dhmhd 06.06.2011 07:27
#81

А кто такая "она"?

Так, ладно... Во-первых, на счет отдельного процесса, который генерирует событие drawReq, которое "просит" FootBallField выполнить отрисовку на area... Я использую такой подход, потому что отрисовка таким образом вполне естественна для игр. Если запустить АИ поиграть против самого себя, то событие мыши возникать не будет. Привязываться к экспоуз тоже не лучший вариант, т.к. я должен просить его(событие экспоуз) возникнуть, т.е. постоянно приходится писать redraw в тех местах где мне необходимо сделать прорисовку. Помоему это несколько привязывает мои классы к компоненту на который будет производится отрисовка, а у меня получается, что передается только переменнная area. Т.е. FootBallField не знает на какой компонент он рисует. Мне пришлось делать бы запрос на перерисовку окна из класса FootBallField после того, как АИ сделал ход...

Как видите в данном моем подходе "просить" компонент на который происходит отрисовка "перерисовать себя" не требуется, он это делает сам. Мало того сейчас я рисую непосредственно на поверхности окна, не используя компонента DrawingAreaView у которого экспоуз "в крови". Помоему у окна с этим событием не все гладко, хотя я голословлю, ибо не проверял...

Лучшим решением в этом случае является использование буфера. Мерцает картинка из-за того, что мы видим последовательное выполнение функций с помощью которых я рисую поле. Если бы можно было рисовать поле в буфер, а потом отрисовывать этот буфер на окно, то мерцания небыло бы. Mentor, если бы вы помогли мне разобраться, каким образом создать невидимую область для отрисовки, вывести туда поле, а затем скопировать ее содержимое на форму, я был бы вам очень признателен.

Во-вторых, на счет бага "два очка для АИ". Я не могу его никак найти... Почему это происходит?

Редактировал dhmhd 06.06.2011 07:30

Прислано dhmhd 06.06.2011 08:24
#82

Все, Сергей Сергеевич, разобрался. Долго думал почему copyArea не работает:)... Источник и приемник перепутал. Теперь все красиво:).

Прислано paxeefixee 06.06.2011 14:47
#83

dhmhd, выложи плз что придумал :)
И кстати, ты не пробовал разбираться, как выводить текст (прикрутить DrawString)? Или возможно уважаемый Mentor подскажет? :)

Редактировал paxeefixee 06.06.2011 14:51

Прислано dhmhd 06.06.2011 15:27
#84

DASM32, на счет вывода текста, сейчас посмотрю. А на счет того, что придумал, все просто как 2*2=4... Вот держи сорсы и, на этот раз, точно работающий бинарник, я надеюсь, финальной версии.

Прислано dhmhd 06.06.2011 15:33
#85

DASM32, есть такой метод у экземпляра класса CgDrawable, называется
Код
drawString: gc
   x: x
   y: y
   string: string.



Вот он тебе и нужен.

Редактировал dhmhd 06.06.2011 17:21

Прислано Mentor 06.06.2011 17:36
#86

dhmhd написал:
... Хотелось бы услышать маши комментарии. Заранее спасибо.


Она - это ваша Маша :)

dhmhd, Вы чего сегодня не пришли?

Я завтра отдам ведомости в 11.00 !!!!

Последний шанс что-то сдать - завтра с 10.00 до 11.00 !!!

Прислано dhmhd 06.06.2011 17:41
#87

Mentor, в ведомостях меня нет т.к. я закрылся пару недель назад. Надо брать направления. А мне их могут не дать т.к. пока у меня нет денег, чтобы оплатить учебу... вот пишу и смеюсь над собой... Хотя, ничего смешного нет...

Прислано Mentor 06.06.2011 17:57
#88

Что-то тупик не поймался...

Прислано Stasian 06.06.2011 18:14
#89

Mentor, А если не завтра то когда вас можно будет еще найти в институте?

Прислано dhmhd 06.06.2011 18:40
#90

Mentor, исправил. Вернее, добавил отслеживание такой ситуации. Интересно, это у вас компьютер в тупик попал? У меня сегодня программа часа 4 играла сама с собой. Все отлично было...

Редактировал dhmhd 06.06.2011 19:10

Прислано Mentor 06.06.2011 19:13
#91

Stasian написал:
А если не завтра то когда вас можно будет еще найти в институте?


Очевидно, довольно часто, но лучше заранее договориться с коллективом, а не приходить по одному..

dhmhd написал:
Интересно, это у вас компьютер в тупик попал?.


Нет, это я сам специально забежал...

Редактировал Mentor 06.06.2011 19:17

Прислано dhmhd 06.06.2011 19:21
#92


dhmhd написал:
Интересно, это у вас компьютер в тупик попал?.


Нет, это я сам специально забежал...


Просто я уж испугался, что в поиске хода бага. Как бы, в принципе, компьютер в тупик попасть не может вообще...

Редактировал dhmhd 06.06.2011 19:22

Прислано paxeefixee 06.06.2011 20:34
#93

В игре AI vs AI каждый из них начинает жутко читерить каждый раунд. Или так и должно быть? :)

Прислано dhmhd 06.06.2011 20:40
#94

DASM32, да, ты прав:). Блин... Раньше такого небыло:). Щас исправлю.

Прислано dhmhd 06.06.2011 20:58
#95

Оказалось, что в предыдущей версии был страшный баг:)... Потому выкладываю новую. Надеюсь. Наконец. Чистую:).

Прислано Mentor 07.06.2011 06:28
#96

Народ, вы где?

Через 30 мин. ведомости отдам!

Прислано Mentor 07.06.2011 09:14
#97

Все! Ко мне только с допусками!

Прислано Mentor 07.06.2011 13:48
#98

Кому еще интересно, вот много иноязычных презентаций про Smalltalk на slideshare...

http://www.slides...=smalltalk

Прислано Mentor 07.06.2011 14:42
#99

Говорят мастера..

Прислано harrrrr 07.06.2011 15:29
#100

Сергей Сергеевич, направление луча света к цели расстановкой зеркал на сетке в Squeak сойдет за курсовую?

Редактировал harrrrr 07.06.2011 15:29

Прислано paxeefixee 07.06.2011 18:06
#101

Mentor,
...need to understand how the thing works...

если бы проблема была только в инкапсуляции... :)

Прислано dhmhd 07.06.2011 18:55
#102

harrrrr, помоему забавно... Сквик, если быть честным, меня напугал своим внешним видом и я его сразу закрыл. Имхо, вижуал эйдж более годная среда... А может быть сказывается моя(сам не знаю по какой причине) любовь к IBM? Надо будет попробовать посквиковать чуть-чуть... Но мне теперь трудно преодолеть психологический барьер, чтобы просто его(сквик) запустить еще раз. В меня любой "красивый" и "нестандартный" ГУЙ вселяет ужас... Лучше уж вообще без него.

Редактировал dhmhd 07.06.2011 19:00

Прислано harrrrr 07.06.2011 19:04
#103

Сквик ок вполне. Впрочем, отвращение к средам, в которых проект - не просто текстовые файлы, никуда не делось и не денется. Как-то криво сохранил (тем не менее тут этот процесс очевиднее, чем в visual age), оно вдобавок крашнулось и прибило ~часовой прогресс.

Прислано dhmhd 07.06.2011 19:09
#104

Ребят у кого есть логин на www.instantiation...

Прислано harrrrr 07.06.2011 19:59
#105

Добро пожаловать в клуб поленившихся пройти регистрацию, лол. Минимум третьим будешь.

Редактировал harrrrr 07.06.2011 20:02

Прислано dhmhd 07.06.2011 20:16
#106

И это что? Как бы нету не у кого:)... Да, я не поленился, просто письмо оттуда не приходит:).

Прислано Mentor 08.06.2011 05:32
#107

harrrrr написал:
Сергей Сергеевич, направление луча света к цели расстановкой зеркал на сетке в Squeak сойдет за курсовую?


Как тема - вполне, однако это уже реализовано в Сквике, перепишите на Васте чтоль..

Буду сегодня к 12.00 13.00

Редактировал Mentor 08.06.2011 07:22

Прислано harrrrr 08.06.2011 09:49
#108

Васт не ставится под вин7 64-бит без плясок с бубном. К тому же готовой реализации на Сквике нет, хотя с готовыми элементами для этого там неплохо.

Редактировал harrrrr 08.06.2011 10:00

Прислано dhmhd 08.06.2011 11:53
#109

harrrrr, то время, что ты потратил на сквик, мог бы посвятить пляскам с бубном:)... А у BuHTOPE3'а разве не семерка 64 бита?.. Про битность не точно, но то что семерка - 100%... Он себе поставил восьмой VAST...

Ну, блин, неужели никто не регистрировался на instatiations.com? Хочу скачать VAST под Linux, а письмо с подтверждением регистрации так и не идет...

Прислано harrrrr 08.06.2011 12:05
#110

Восьмого под рукой нет, на торрентах тоже нет, а региться лениво

Прислано dhmhd 08.06.2011 12:26
#111

Да, кстати, я гуглил... Его реально нигде нет:). Может быть они так ретиво следят за соблюдением авторских прав;).

Прислано harrrrr 08.06.2011 12:34
#112

Не думаю, просто он вряд ли много кому нужен, тем более, что в триале особых ограничений нет. Да и с пиратской бухты никому еще ничего не удавалось удалить.

Редактировал harrrrr 08.06.2011 12:36

Прислано Mentor 08.06.2011 13:06
#113

harrrrr, хорошо, пусть будет Сквик, посмотрим, насколько Вы там разобрались, только приносите его с собой, в лабораториях его нет.

dhmhd, у instantiations такая политика - если вы что-то скачали и через месяц не купили - вас банят.
Просто пошлите запрос с другого ящика и все...

Прислано harrrrr 08.06.2011 15:55
#114

mentor, а Вы в институте когда теперь будете?

Редактировал harrrrr 08.06.2011 15:56

Прислано dhmhd 08.06.2011 16:22
#115

Mentor, я позавчера отправил запрос... До сих пор письма нет... А я ничего не скачивал...

Прислано Mentor 09.06.2011 06:29
#116

Буду сегодня примерно с 12.00.
Но в 14.00 начнутся защиты дипломов...
Виктор, значит нужно ждать, они пришлют...

Кстати, Виктор, Вы зря Сквик так быстро закрыли. В настоящее время он один из самых быстрых. Кроме того, на нем основан Pharo, который подходит для IPhone (см. фото)

Редактировал Mentor 09.06.2011 06:38

Прислано Grandi 09.06.2011 13:04
#117

Сергей Сергеевич, когда вы будете в институте теперь?

Прислано Mentor 09.06.2011 13:59
#118

Ориентировочно прием завтра с 13 до 14 и после дипломников.

Прислано paxeefixee 09.06.2011 20:49
#119

Пример РПЗ от Olorin.

Редактировал paxeefixee 10.06.2011 06:29

Прислано Mentor 09.06.2011 21:57
#120

Если бы не docx, я бы тоже "заценил"...

Прислано dhmhd 09.06.2011 22:23
#121

Да, кстати, Olorin, docx - sucks, odt рулит:).

Прислано paxeefixee 10.06.2011 06:31
#122

Mentor, заменил файлик на .doc. Так и знал, что у кого-то будут проблемы с открытием :)
А ведь в принципе есть всяческие онлайн-конвертеры, например docx2doc.com. Да и для 2003 офиса есть compatibility паки :)

dhmhd, а ведь docx и odt даже внутренне очень похожи - оба zip-архивы с xml-ками внутри ;)

Прислано dhmhd 10.06.2011 08:20
#123

"docx и odt даже внутренне очень похожи". Это я прекрасно знаю... Но хоть и похожи, всеравно они разные... И, DASM32, неужели ты хочешь поспорить и переубедить меня в том, что "docx - sucks"?

Прислано Mentor 10.06.2011 12:19
#124

DASM32 написал:
заменил файлик на .doc. Так и знал, что у кого-то будут проблемы с открытием :)


За исключением того, что в выложенном файле остался неисправленный концептуальный анализ, в остальном сойдет...

Прислано paxeefixee 10.06.2011 17:03
#125

Mentor, ну, какой дали - такой и выложил :)

Прислано Aeron 10.06.2011 17:30
#126

Mentor. У меня проблема! Я студент ИТВ 1 09. Я работал в группе над курсовой работой о тестах. Из-за того что лабы не сданы у меня нет зачета, но у из-за того что у меня нет зачеты Вы не хотите ставить оценку за курсовую. Не могли бы вы все таки ее поставить? Я уже пропустил 1 экзамен, а теперь я могу упустить автомат по другому! Пожалуйста войдите в положение и поставте хотя бы оценку за курсовую.

Прислано Olorin 10.06.2011 18:14
#127

Mentor, то, что было исправлено, было отдано вам. А сканов я не делал. :D

dhmhd, мне было лень конвертировал в док. Я все равно после того, как написал, сразу распечатал. Формат-то в печати роли не играет. :)

Прислано Mentor 10.06.2011 20:31
#128

Aeron, Как говориться - из любого положения можно найти выход .... в другое положение. А что Вы не подошли ко мне с вашей проблемой вчера и сегодня? А что Вы не попросили товарищей Вам помочь? Теперь я буду только 14го числа. У Вас теперь много времени, чтобы все доделать...

Редактировал Mentor 10.06.2011 20:32

Прислано Mentor 11.06.2011 08:01
#129

Федор (насколько я помню)!
Забыл сказать, - Вы бы выложили, чего Вы там "насквикали", желательно с комментариями и инструкцией по запуску...

Редактировал Mentor 11.06.2011 08:01

Прислано harrrrr 11.06.2011 18:10
#130

После выходных, просто окончательная версия образа и исходников у Андреева, а у него пока интернетов нет

Прислано SGL900 12.06.2011 23:17
#131

Итак, сегодня мне удалось сделать невозможное, а именно зарегистрироваться на instantiations.com и скачать от туда smalltalk, поэтому сейчас у вас есть возможность скачать его без регистрации и СМС!! Из-за ограничения 50 МБ пришлось это все немножко переархивировать, но ниче, и так сойдет.

З.Ы. Поздновато, но мб кому и поможет... XDD

Прислано Mentor 13.06.2011 09:31
#132

Прямо не знаю, нарушили ли Вы какие-либо пункты лицензии .... ?

Прислано Mentor 13.06.2011 12:42
#133

Проверка rss...

Прислано dhmhd 13.06.2011 21:04
#134

SGL900, спасибо что выложил:). А под линуху ты не скачивал? Скачай если можешь, пожалуйста.

Прислано SGL900 14.06.2011 05:44
#135

Ну, вот и для линухи, пускай пока так лежат, потом куда-нибудь перезалью...

Прислано Mentor 19.06.2011 15:27
#136

Буду 23го с 11.00, если кому надо...

Редактировал Mentor 19.06.2011 15:28

Прислано Mentor 23.06.2011 09:25
#137

Прошу всех, кто этого еще не сделал, выложить свои программы на форум

Прислано Grandi 23.06.2011 12:07
#138

Отчет также в архиве.

Прислано Olorin 23.06.2011 18:49
#139

Курсовик

Редактировал Olorin 23.06.2011 18:50

Прислано Mentor 23.06.2011 18:53
#140

Grandi, в концептуальном анализе из вас что-то понял только один человек, но это не Вы...

Прислано Mentor 24.06.2011 10:56
#141

Сперанский, Вы тут бываете? Вам не стыдно сами знаете за что?

Прислано Drednout 27.06.2011 19:04
#142

Врятли Сперанский тут бывает, потому что о его существовании в наших группах мы узнали лишь когда на одном из экзаменов нам огласили список допущенных, и вдруг всплыла доселе неизвестная фамилия =) Откуда он мы выяснили, но в глаза его ещё никто кроме восстановившихся не знает.

Прислано dhmhd 29.06.2011 09:40
#143

А еще его ник UnknownGhostThatWasNeverExisted. Его посты есть, но вы их не видете, потому что его и его постов не существует. Его ID 18446774073709551617... Самое смешное, что он закрылся не закрываясь, сдал все курсовые не сдавая оных и т.д. Потому что он такоэ...

Прислано Mentor 29.06.2011 15:54
#144

И я даже знаю, как у него это получается. Поэтому говорю сразу - мне он ООП не сдавал !

Прислано Mentor 01.07.2011 23:41
#145

Федор, и другие, кто так и не отдал мне свои программы!
Выложите их уже...



Поздравляю всех с окончанием учебного года!!! :alco:

Редактировал Mentor 03.07.2011 07:03

Прислано Mentor 04.07.2011 12:30
#146

http://www.cincom...3297408982
http://www.cincom...3297320353
http://www.smallt...ltalk.html
... Чуть ли не каждый чип в мире выл произведен с использованием технологического процесса, управляемого пакетом ControlWorks, написанного на VisualWorks Smalltalk.


http://sd-10807.d...db37ae27ac
- читаем первый пост

http://me.anderin...languages/
- соревнование по развертыванию среды разработки

Редактировал Mentor 04.07.2011 13:05

Прислано ponyatov 18.08.2011 05:34
#147

Как показал опыт щщупания Forth самый эффективный способ разобраться с языком -- написать свою реализацию.

Хочу то же сделать со SmallTalk -- интересуют 2 варианта:
1) максимально облегченная система для встраиваемых приложений -- AVRmega, ARM или в худшем случае x86+DOS
2) кластерный вариант, способный прозрачно работать на beowulf кластере из нескольких персоналок

Существуют ли какие-то книги, в идеале в стиле американских учебников (без зауми про ООП на первых 150 страницах), на русском или английском, которые бы позволили освоить язык на минимальном уровне + подробное описание внутренней реализации -- что то типа книги Баранова, Ноздрунова Язык ФОРТ и его реализации ?

вот из этого http://stephane.d...Books.html что для начала читать ?

ну или вводную книгу в язык в стиле книги Россум ван Г., Дрейк Ф. Л. Дж., Откидач Д. С. и др. Язык программирования Python
http://www.python...ok-ods.pdf
английский или переводной (наши авторы в таком стиле вообще всю техническую литературу писать давно разучились, дают набор формальных определений на 3 страницы, а потом сразу заваливают потоком эллиптических интегралов в n-мерном пространстве накомпиленных в десятый слой из книг 60-70 гг :umnik: )

Редактировал ponyatov 18.08.2011 05:42

Прислано Mentor 14.08.2014 16:10
#148

Презентация для первого занятия.
В общую копилку материалов.

Редактировал Mentor 14.08.2014 16:14