Скоро праздники: через 9 дней (05.05.2024) Пасха через 5 дней (01.05.2024) День трудящихся и праздник Весны через 13 дней (09.05.2024) День Победы через 47 дней (12.06.2024) День независимости
Сейчас на сайте
· Гостей: 3
· Пользователей: 0
· Всего пользователей: 2,911 · Новый пользователь: Artisanemo
Баннеры
Мы рады приветствовать Вас на сайте групп факультета ИТ МИРЭА 2009 года поступления!
Спешим сообщить Вам, что без регистрации вы увидите лишь малую часть нашего сайта и не увидите самых "вкусных" файлов, тем и форумов.
Рекомендуется зарегистрироваться здесь - регистрация. Ну или.
Смотрим "guide по халяве" в теме Решенные задачи.
Дамп файлового архива vv206.ru (торрент): http://itv09.org/forum/viewthread.php?thread_id=98
Если хотите стереть свое сообщение насовсем - напишите вместо его текста [del] или что-нибудь в этом роде, администратор увидит и удалит его. Также можно сделать это самостоятельно - нажмите кнопку "редактировать сообщение" рядом с требуемым сообщением, а затем поставьте галочку у "Удалить сообщение", затем нажмите "Сохранить".
Сообщений: 106 Благодарности: 18 раз(а) в 7 сообщениях Зарегистрирован: 23.03.11 Со дня регистрации: 4783
RE: Человек и Smalltalk
Я бы хотел использовать ваш форум не для того, чтобы поспорить стоит или не стоит использовать Смолток. Это будет вечный спор из серии какой английский лучше - тот, на котором говорят в Англии, или тот, на котором в Австралии (вроде бы в Англии была заложена идея языка, но поехать мы хотим в Австралию). Несогласный всегда будет замечать недостатки и отворачиваться от достоинств. Наш курс все-таки называется ООП, а ООП фактически началось со Смолтока. Поэтому, чтобы не изучать английский Австралии, давайте обратим внимание на достоинства Смолтока и будем иметь их ввиду в будущем. То, что язык не мертвый мы уже выяснили, а то, что по недоразумению в России его мало знают - поправимо при помощи институтов. К тому же у вас это редкий шанс - С и прочее гораздо проще изучить самостоятельно, а тут все-таки может пригодиться преподаватель.
Я бы хотел использовать форум для компенсации потерянного учебного времени и для повышения оперативности работы, поскольку у нас слишком много занятий уже пропало. Я предполагал выкладывать сюда учебный материал и отвечать на вопросы, если вы не против.
На досуге можете подумать, почему уже 75 лет существует математика от Бурбаки? С виду она запутанная, непонятная, подавляющая часть планеты ею не пользуется. Однако про нее вспоминают при первом же подходящем под ее идеологию случае..
Сообщений: 543 Благодарности: 158 раз(а) в 98 сообщениях Зарегистрирован: 11.09.09 Со дня регистрации: 5341 Пол:
RE: Человек и Smalltalk
И снова здравствуйте, 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, а не языки, с которыми "хоть куда" и "хоть сейчас".
Если сказал лишнего за остальных - простите, но по крайней мере мне хотелось бы именно этого.
Сообщений: 106 Благодарности: 18 раз(а) в 7 сообщениях Зарегистрирован: 23.03.11 Со дня регистрации: 4783
RE: Человек и Smalltalk
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.
| 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.
Сообщений: 1 Благодарности: 0 раз(а) в 0 сообщениях Зарегистрирован: 28.03.11 Со дня регистрации: 4778
RE: Человек и Smalltalk
Привет участникам дискуссии.
Мне кажется пример с реализацией простейшего алгоритма, как показатель скорости написания листинга или его размера в зависимости от выбора языка некорректен. Хотя тоже весьма показателен.
Хотелось бы отметить, что под разные классы задач используют разные языки, где учитываются все ньюансы для достижения наилучшего решения.
Вопрос читабельности или нечитабельности синтаксиса не считаю актуальным. На этом не стоит делать акцент.
А вот к скорости написания надо подробнее.
Если обратится к самым распространенным задачам - клиент- серверным. Можно выделить 2-3 крупные подзадачи:
- Система безопасности
- работа с БД
- работа с графикой
Ведь любая система не ограничивается взаимодействием внутренних структур данных между собой. Где написание алгоритма заняло условно на 5 минут быстрее, а то вот заставить работать вместе все компоненты системы на неделю дольше.
Так же вопрос тестирования всей системы.
Так же вопрос многопоточности приложения.
Если брать язык java то есть готовые компоненты для систем, куча туториалов и вопрос скорости освоения минимален.
Что есть у smaltalk? И какова скорость освоения?
Ведь не зря говорят: Время - деньги.
Оффтоп: Регистрация тут - ахтунг. Capture - жесть. Не сохранение введенных данных - жесть. Вообщем целый квест для регистрации.
Сообщений: 543 Благодарности: 158 раз(а) в 98 сообщениях Зарегистрирован: 11.09.09 Со дня регистрации: 5341 Пол:
RE: Человек и Smalltalk
Mentor написал:
Тут Вы не совсем разобрались. В данном случае Смолток используется как внешний язык, обеспечивающий удобство разработки. Программа на Смолтоке потом транслируется в команды для PIC-процессора, т.к. PIC ничего другого не понимает (у него нет аппаратной поддержки виртуальной машины). Поэтому потерь в скорости исполнения, обусловленных использованием Смолтока, нет.
Что же, прекрасно, но я думаю что все равно сгенерированный компилятором объектно-ориентированный к тому же код будет всяко менее оптимизирован, чем написанный на языках, которые позволяют "ближе" оперировать данным им оборудованием.
Mentor написал:
- Зачем нам комбайны, барин? Они уродуют нашу землю! Земля живая, мы должны копать ее лопатами, поливая потом и кровью, выбирая камни и корневища, только тогда она даст урожай!
- Хорошо, Прохор, вот тебе лопата, пожалуйста, вскопай эти 3 гектара сегодня к вечеру...
- :o
К сожалению, не уверен, что вполне понял данный "отрывок". Если вы имеете ввиду что комбайн - Smalltalk, а лопата - С++, то выходит дело что вы тоже меня не вполне поняли. Я же не говорил, что Smalltalk бесполезен, я лишь говорил что его специализация кажется мне узковатой. На поле комбайн подойдет, а например для раскопок марсианского/лунного грунта я думаю врятли.
Mentor написал:
Потерял ссылку, найду - покажу. "Реализовано до него" - значит до него придумано, осознано как необходимость, предоставлено в использование. Так это же здорово! Пожалуйста, реализуйте для С все, что реализовано в Смолтоке, Прологе, Хаскеле, добейтесь максимальных показателей по всем критериям - чтобы и быстро, и полный контроль, и естественно для человека - и Вам поставят памятник, будут почитать как разработчика самой лучшей системы программирования.
Так уже реализовано до меня :)
И да - помоему за универсальность разработанных кусочков кода мы зачастую расплачиваемся тем же быстродействием и оптимизированностью под текущую задачу, не так ли?
Mentor написал:
Если просто подсчитать строки кода, даже с учетом красивого оформления, то у Смолтока ровно в 3 раза меньше кода.
Без использования приколов и грязных приемчиков вроде eval(), base64 и gzip.
Помоему тут количество кода сильно зависит от кол-ва операций, уже реализованных создателями интерпретатора, вроде готовой occurrencesOf в вашем коде, наличие которых к тому же, как мне кажется, зависит от среды.
Mentor написал:
большой размер приложения как критерий часто не рассматривается благодаря достоинствам виртуальной машины.
Но тем не менее вы употребили этот довод.
И насчет размеров - я уже приводил пример, как размер самого кода может быть меньше в зависимости от самой виртуальной машины. Я спрашивал о размере выходного кода, исполняемого уже нашим процессором.
Mentor написал:
Настоящее у нас не совсем благое (Фукусима, Ливия и прочее к лету всему миру аукнется), а перспективы в нашей стране всегда расплывчаты.
Нуу, тут я говорил о нашем "программистском" настоящем и будущем, о знаниях.
Насчет Пролога и Хаскеля - к сожалению, не могу ничего сказать, не знаю их. Вот если буду изучать - тогда будет, что сказать :)
Mentor написал:
использовать везде один универсальный язык - возможно, но дорого и не рационально, поэтому так никто не поступает, поэтому Вас в институте учат разным вещам.
Именно потому имеется не только язык С/С++, а превеликое множество подобных им :)
redline, рады, что вы прошли данный квест с Captcha :)
Насчет сохранения данных - посмотрю, спасибо за замечание.
Сообщений: 106 Благодарности: 18 раз(а) в 7 сообщениях Зарегистрирован: 23.03.11 Со дня регистрации: 4783
RE: Человек и Smalltalk
Здравствуйте.
Спасибо всем за заданные вопросы, но давайте пока отложим демагогию.
Времени остается мало, жизнь слишком коротка, чтобы тратить ее на споры - можно проспорить и ничего не сделать, а можно поверить и успеть многое. Это особенно замечаешь, когда начинают уходить близкие люди.
По указанной ссылке (в конце страницы) находятся 2 свежих пособия 2007-08 годов нашего соотечественника Ю.А. Кирютенко, посвященные как общей идеологии Смолтока, так и его конкретной реализации - среде VisualWorks.
Эти книги во многом для нас полезны, не смотря на то, что мы занимаемся VAST.
Думаю стоит присовокупить данную литературу к файловому архиву - ссылка не всегда работает (если не работает, я пришлю).
Сообщений: 106 Благодарности: 18 раз(а) в 7 сообщениях Зарегистрирован: 23.03.11 Со дня регистрации: 4783
RE: Человек и Smalltalk
Нашел книгу Т. Бадда про ООП, в которой Smalltalk рассматривается параллельно с С++, Java, Object Paskal и др. (Для подготовки к экзамену и вообще. Сохраните в архиве..)
Ну и конечно следует почитать Буча (тоже прилагается)...
Сообщений: 274 Благодарности: 135 раз(а) в 82 сообщениях Зарегистрирован: 01.10.09 Со дня регистрации: 5321
RE: Человек и Smalltalk
Сергей Сергеевич, что с динамическим добавлением элементов? Без него обойтись?
Сурово программирую на суровых сях и не менее суровом ассемблере под просто нордически суровые микроконтроллеры.
Бысрто, а галвоне качевстенно наебру юблой тескт
ID пользователя 13 - Это число преследует меня. Лопатный лопатор лопатных лопат - это лопата, которая лопатит лопаты лопатных лопат на лопате лопатчимых лопат лопачущей лопатной лопаты.
"Дикий вентилятор охлаждения" звучит как "непоколебимый рубильник угнетения".
Люди делятся на два типа: те, кому Помощник Эксперта и Решатель Проблем уже в кошмарах снятся, и остальные.