Здравствуйте, Курилка, Вы писали:
ГА>>У меня складывается впечатление, у что у Вирта (при всем моем к нему уважении) нездоровая ревность к "академическим играм, не имеющим отношения к реальной жизни", если эти игрища вышли не из под его пера .
К>И при нелюбви его к ак. играм, тот же оберон ничем кроме как академической игрой у меня язык не поворачивается назвать...
Ну примерно это я и пытался сказать (см. выделенное).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Лекция Вирта в политехническом - впечатления
LM>4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
LM>Это Ваши слова и Вирта? Могу порекомендовать Страуструп "Дизайн и эволюция С++". Совсем это не так.
По-моему, понятно, что BreQWas кратко пересказал свое понимание тезисов Вирта. А мы сейчас всем РСДНом начем с ним спорить и убеждать, что это не так .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Лекция Вирта в политехническом - впечатления
Здравствуйте, LuciferMoscow, Вы писали:
H>>>Вирт явно не хотел сталкивать лбами свой красивый Оберон и коммерческие поделки C++, Java и C# BQS>>Я честно попытался спровоцировать его на это вопросом "почему при наличии такого хорошего оберона программы пишутся не на нём". Помните, что он ответил? LM>Не все там были. Можно не говоииь загадками?
С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
Здравствуйте, eao197, Вы писали:
E>Вернемся к языкам программирования. При знакомстве с Perl и Ruby меня, например, неприятно поразила возможность писать if и while после действий. Т.е. вместо "нормального":
E>if( something )
E> do_that()
E>можно написать:
E>do_that() if( something )
E>… И ведь такая возможность в Perl и Ruby появилась не просто так -- она была добавлена туда по реальной необходимости.
А что за необходимость? чем практически постфиксная запись отличается от префиксной
Здравствуйте, LuciferMoscow, Вы писали:
LM>Не все там были. Можно не говоииь загадками?
Если вкратце, то
3) Оберон не является промышленным стандартом потому, что ему не учат в университетах. А в университетах не учат оберон, потому что он не является промышленным стандартом. Порочный круг.
4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, LuciferMoscow, Вы писали:
H>>>>Вирт явно не хотел сталкивать лбами свой красивый Оберон и коммерческие поделки C++, Java и C# BQS>>>Я честно попытался спровоцировать его на это вопросом "почему при наличии такого хорошего оберона программы пишутся не на нём". Помните, что он ответил? LM>>Не все там были. Можно не говоииь загадками?
_FR>
С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
_FR>?
Согласен, мнение Вирта на эту тему озвучено.
Re[6]: Лекция Вирта в политехническом - впечатления
Здравствуйте, _FRED_, Вы писали:
E>>… И ведь такая возможность в Perl и Ruby появилась не просто так -- она была добавлена туда по реальной необходимости.
_FR>А что за необходимость? чем практически постфиксная запись отличается от префиксной
Мировосприятием и настроением программиста в данный, конкретный момент времени Строго говоря, разница только на эстетическом уровне. Вот парочка примеров.
Это формирование командной строки для запуска скрипта. У скрипта могут быть аргументы как со значениями, так и без (т.е. --verbose -- это аргумент без значения, а --path=/usr/local/lib -- это аргумент со значением). Код, который использует постфиксную нотацию (pair[0] всегда содержит имя аргумента, pair[1] содержит nil, если значения нет):
cmd_line = "ruby " + a_config.action_script_name
a_config.action_script_params.each do |pair|
cmd_line << " " << pair[ 0 ]
cmd_line << "=" << pair[ 1 ] if pair[ 1 ]
end
А вот запись префиксная:
cmd_line = "ruby " + a_config.action_script_name
a_config.action_script_params.each do |pair|
cmd_line << " " << pair[ 0 ]
if pair[ 1 ]
cmd_line << "=" << pair[ 1 ]
end
end
либо так, для компактности:
cmd_line = "ruby " + a_config.action_script_name
a_config.action_script_params.each do |pair|
cmd_line << " " << pair[ 0 ]
if pair[ 1 ] then cmd_line << "=" << pair[ 1 ] end
end
Лично мне первый вариант кажется понятнее, т.к. наша задача -- записать в одну строку пары '<имя>=<значение>', где только у некоторых элементов не будет части '=<значение>'.
Еще один пример. Разбор всех элементов в XML с определенным именем и получение из каждого элемента значения его атрибута:
paths = []
config.each_element( CONFIG_PATH_TAG ) do |e|
paths << Config.mandatory_attr( e, CONFIG_PATH_NAME_ATTR )
end unless nil == config.elements[ CONFIG_PATH_TAG ]
Выделенная жирным строка запрещает разбор элементов, если их в XML вообще нет (в этом случае метод each_element выкинет исключение). Хотя это очень редкая ситуация, т.к. в большинстве случаев в XML есть хотя бы один искомый элемента. Не используя unless нужно было бы записать:
paths = []
if nil != config.elements[ CONFIG_PATH_TAG ]
config.each_element( CONFIG_PATH_TAG ) do |e|
paths << Config.mandatory_attr( e, CONFIG_PATH_NAME_ATTR )
end
end
Уж не знаю, насколько эти примеры будут показательными. Все же свободное чтение постфиксных if/unless/while требует некоторого погружения в язык. Без этого традиционные, префиксные выражения кажутся понятнее. Но, когда привыкаешь к языку разумное использование постфиксных выражений, имхо, повышает читабельность.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Лекция Вирта в политехническом - впечатления
3) Оберон не является промышленным стандартом потому, что ему не учат в университетах. А в университетах не учат оберон, потому что он не является промышленным стандартом. Порочный круг.
> 4) С/С++ и другие языки, которые сейчас этими стандартами являются, стали таковыми в основном благодаря маркетингу и громадной финансовой мощи тех, кто их продвигал.
Гм... Я почему-то всегда думал, что Си был создан для использования исключительно внутри AT&T. Промышленным стандартом этот язык стал исключительно из-за своей логической завершенности и выразительности. Си есть конечная форма логического развития любого языка для системного программирования. Я подчеркиваю, Си такой, какой он есть не потому, что правительственная коммиссия или отдельно взятый, пусть и уважаемый, профессор, решили что дескать нужно им создать язык, а потому, что СИ есть результат закономерной эволюции языков A и B... Си -- это простой язык для выполнения сложных, очень сложных вещей. Именно поэтому у Си в системном программировании нет конкурентов и быть не может, как и не может быть конкурентов у ассемблера, например.
Такую большую популярность Си завоевал исключительно потому, что в те времена любое программирование было довольно низкоуровевым, т.е. довольно близким к системному.
А Си++ исключительно унаследовал популярность и практически все преимущества Си.
Все гораздо проще, как видите. И совершенно не нужны тут теории заговора со стороны мировых корпораций.
Posted via RSDN NNTP Server 1.9
Re[6]: Лекция Вирта в политехническом - впечатления
Здравствуйте, Donz, Вы писали:
D>Также надо учитывать, что Толстой один, сколько людей может написать как он? Ты предлагаешь настолько усложнить языки программирования, чтобы на них могли ваять исключительно гении, а для понимания написанного человеку требовался пятилетний курс языка?
Фишка как раз в том, что написаные Толстым произведения совсем не требуют для своего понимания пятилетнего курса русского языка (разве что для иностранцев).
И меня бы вполне устроило, если бы качественный софт писало всего несколько гениев, а не половина полунеграмотной Индии.
А по поводу того, сколько людей смогут писать как Толстой -- в "Законах Паркинсона" есть замечательный рецепт: для того, чтобы было больше гениев, нужен высокий средний уровень всех остальных. Поэтому, может быть, вместо создания языков для дебилов (я не про Оберон, а вообще), тратить силы на хорошую подготовку самих программистов?
D>Мне совершенно не хочется, чтобы if можно было написать двумястами разными способами.
Просто попробуй
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Лекция Вирта в политехническом - впечатления
Здравствуйте, eao197, Вы писали:
E>>>… И ведь такая возможность в Perl и Ruby появилась не просто так -- она была добавлена туда по реальной необходимости. _FR>>А что за необходимость? чем практически постфиксная запись отличается от префиксной E>Мировосприятием и настроением программиста в данный, конкретный момент времени Строго говоря, разница только на эстетическом уровне.
Да, бывают такие "моменты времени" Но, ИМХО, во-первых, сегодня-момент, а завтра — нет и что? Использовать конструкции и стиль в зависимости от настроения во-вторых, я вижу порочность употребления "необщепринятых" конструкций в том, что они усложняют понимание для "непосвящённых", а в той или иной области "непосвящённым" был каждый. Ведь здесь не просто синтаксис (префикс-постфикс), но и образ мышления (прочтения), разбора алгоритма затрагивается, а научиться "вдруг" думать по-другому (отложив, например, С++ и переключившись на Ruby) способны очень не многие.
E>Уж не знаю, насколько эти примеры будут показательными. Все же свободное чтение постфиксных if/unless/while требует некоторого погружения в язык. Без этого традиционные, префиксные выражения кажутся понятнее. Но, когда привыкаешь к языку разумное использование постфиксных выражений, имхо, повышает читабельность.
Именно, требуется привычка => повышается сложность поддержки, так как найти при необходимости не просто программиста, но и с "привычками" должно быть сложно…
Во многом я с тобой согласен, но, все же, позволю себе несколько ремарок.
_FR>Ведь здесь не просто синтаксис (префикс-постфикс), но и образ мышления (прочтения), разбора алгоритма затрагивается, а научиться "вдруг" думать по-другому (отложив, например, С++ и переключившись на Ruby) способны очень не многие.
Имхо, во-первых, это не так. В равной степени владеть разными стилями программирования (скажем, императивным на C++ и функциональным на Эрланге) действительно сложно. А вот освоить несколько похожих императивных языков совсем не сложно.
Во-вторых, такие переключения полезны. Шоры с глаз снимают. Причем качественно. Это как путешествие в далекую страну -- не только свежее впечатление, но и осознание некоторых вещей, о которых раньше и не думал (но здесь все сильно индивидуально).
_FR>Именно, требуется привычка => повышается сложность поддержки, так как найти при необходимости не просто программиста, но и с "привычками" должно быть сложно…
Это безусловно. Но, мне кажется, что если сама программа сделана без over-design-а, но ее понимание не так уж и сложно. Ведь практически в любом языке программирования очень много знаний мы получаем не от чтения описаний языка в какой-нибудь умной книжке, а при изучении чужих программ. Поэтому если программа хорошо написана, на нормальном языке, для которого есть достаточно книг и учебных материалов (а Ruby как раз из таких), то среднему программисту в ней разобраться не составит труда даже после поверхносного знакомства с языком. Так что весь фокус в том, чтобы программу хорошо написать.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Лекция Вирта в политехническом - впечатления
Здравствуйте, eao197, Вы писали:
EE>Мировосприятием и настроением программиста в данный, конкретный момент времени Строго говоря, разница только на эстетическом уровне. Вот парочка примеров.
[...] E>Уж не знаю, насколько эти примеры будут показательными. Все же свободное чтение постфиксных if/unless/while требует некоторого погружения в язык. Без этого традиционные, префиксные выражения кажутся понятнее. Но, когда привыкаешь к языку разумное использование постфиксных выражений, имхо, повышает читабельность.
Хорошие примеры. Ключевые слова здесь — "разумное использование". Что приведенные примеры и демонстрируют. Однако, увлекшись, или редактируя чужой код, можно выдать и такое (псевдокод):
if (cond1)
{
do_some1() if (cond2);
do_some3() if (cond3);
}
Если cond — не просто какие-нибудь флаги, то чтение такого кода превращается в хорошую головоломку.
Re[6]: Лекция Вирта в политехническом - впечатления
Здравствуйте, sch, Вы писали:
sch>Гм... Я почему-то всегда думал, что Си был создан для использования исключительно внутри AT&T. Промышленным стандартом этот язык стал исключительно из-за своей логической завершенности и выразительности.
Си стал поппулярен потмоу, что юниксы в университетах американских ставили. По той же причине у нас Фортран был популярен.
sch>Си есть конечная форма логического развития любого языка для системного программирования. Я подчеркиваю, Си такой, какой он есть не потому, что правительственная коммиссия или отдельно взятый, пусть и уважаемый, профессор, решили что дескать нужно им создать язык, а потому, что СИ есть результат закономерной эволюции языков A и B...
В смысле, не один уважаемый профессор, а целых два??? И в чем же "закономерность" эволюции состоит?
sch>Си -- это простой язык для выполнения сложных, очень сложных вещей. Именно поэтому у Си в системном программировании нет конкурентов и быть не может, как и не может быть конкурентов у ассемблера, например.
Си — простой язык??? Ну, может и простой для тех, кто его изучил, но только для них. Почему конкурентов у Си быть не может? ИМХО, все решает традиция. Если я в университете Си изучал, зачем мне еще что-то учить? И то, что ОС пишут на Си — точно такая-же традиция.
sch>Такую большую популярность Си завоевал исключительно потому, что в те времена любое программирование было довольно низкоуровевым, т.е. довольно близким к системному.
sch>А Си++ исключительно унаследовал популярность и практически все преимущества Си.
Следует добавить: и недостатки тоже.
sch>Все гораздо проще, как видите. И совершенно не нужны тут теории заговора со стороны мировых корпораций.
Так при чем здесь заговор? В фирме основной продукт на Си написан, вот они и вкладывают в изучение именно Си, а не какого-нибудь другого языка. Почему продукт на Си написан? Так традиция, ничего не поделаешь.
Не стоит восхвалять Си, там много известных несовершенств. Главное преимущество этого языка — традиция. Человек долго к чему-то привыкает и, если уж привыкнет, то отвыкание от этого воспринимает как трагедию. Я, кстати, не исключение. Даже если больше года не программируешь, все-равно где-то в подсознании сидит,совершенно как родной русский. Вот недавно забыл, что означает операция процент. Но, все-равно буду на нем писать, ибо на других пишу так же, как по английски разговариваю.
Re[7]: Лекция Вирта в политехническом - впечатления
Здравствуйте, mefrill, Вы писали:
M>Си стал поппулярен потмоу, что юниксы в университетах американских ставили. По той же причине у нас Фортран был популярен.
кто ставил? начальство по указке свыше? ни хрена подобного! сами же и ставили. потому что было удобно
M>В смысле, не один уважаемый профессор, а целых два??? И в чем же "закономерность" эволюции состоит?
не "два уважаемых профессора", а "два прожженых практика"
M>Почему конкурентов у Си быть не может? ИМХО, все решает традиция.
это сейчас — традиция. раньше традиции не было, а вот конкурентов у Си была куча
M>Так при чем здесь заговор? В фирме основной продукт на Си написан, вот они и вкладывают в изучение именно Си, а не какого-нибудь другого языка.
Никакого основного продукта, написанного на Си, у них не было ТОГДА
Как утверждается историками, Юних вообще возник как побочный продукт разработки внутреннего софта.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Лекция Вирта в политехническом - впечатления
mefrill wrote:
> sch>Гм... Я почему-то всегда думал, что Си был создан для > использования исключительно внутри AT&T. Промышленным стандартом этот > язык стал исключительно из-за своей логической завершенности и > выразительности. > Си стал поппулярен потмоу, что юниксы в университетах американских > ставили. По той же причине у нас Фортран был популярен.
А почему ставили юниксы? На фортране у нас системный софт, кстати, не
писали.
> sch>Си -- это простой язык для выполнения сложных, очень сложных > вещей. Именно поэтому у Си в системном программировании нет > конкурентов и быть не может, как и не может быть конкурентов у > ассемблера, например. > Си — простой язык???
Да, простой. Почти такой же простой, как и ассемблер.
> Почему конкурентов у Си быть не может?
Потому, что он максимально приближен к реальной аппаратуре. То есть в С
нет искусственных понятий типа строчек или массивов — все выражается
через базовые понятия.
Конкурентом для С может быть С++ — в нем сохранились все возможности С и
добавилось много новых преимуществ.
> ИМХО, все решает традиция. Если я в университете Си изучал, зачем мне > еще что-то учить? И то, что ОС пишут на Си — точно такая-же традиция.
А на чем еще писать ОСы?
> Следует добавить: и недостатки тоже.
Не все, в С++ многое лучше сделано.
> sch>Все гораздо проще, как видите. И совершенно не нужны тут теории > заговора со стороны мировых корпораций. > Так при чем здесь заговор? В фирме основной продукт на Си написан, вот > они и вкладывают в изучение именно Си, а не какого-нибудь другого > языка. Почему продукт на Си написан? Так традиция, ничего не поделаешь.
А почему традиция началась? Продукты на С, кстати, очень хорошо
совмещаются со всеми остальными языками.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[7]: Лекция Вирта в политехническом - впечатления
Здравствуйте, eao197, Вы писали:
D>>Также надо учитывать, что Толстой один, сколько людей может написать как он? Ты предлагаешь настолько усложнить языки программирования, чтобы на них могли ваять исключительно гении, а для понимания написанного человеку требовался пятилетний курс языка?
E>Фишка как раз в том, что написаные Толстым произведения совсем не требуют для своего понимания пятилетнего курса русского языка (разве что для иностранцев).
И его рассуждения в "Война и мир" тоже запоем читались, совершенно не напрягая? Вот помнится, я эпилог (заключительные мысли о войне, Наполеоне и т.д.) дочитал только для галочки "вот прочитал всю "Войну и мир" от корки до корки".
Вообще, худ. книги читаются для удовольствия, а программизм большей частью — работа (я не отрицаю, что он может приносить удовольствие). И смысл работы не в том, чтобы выпендрится, мол я вот циклы двадцатью разными способами делать могу (хотя способы полностью идентичные по результату), а чтобы продукт работал, и коллеги понимали что к чему в твоём коде.
E>И меня бы вполне устроило, если бы качественный софт писало всего несколько гениев, а не половина полунеграмотной Индии.
Гениев на всех не хватит. Насчёт индусов, уж как бы над ними не прикалывались, однако свои бабки они отбивают, экономику Индии поднимают, а люди им продолжают заказывать, видимо работодателей всё устраивает. И тут можно кричать и топать ногами, но никуда от этого не деться.
"Все должно быть простым настолько, насколько это возможно, но не проще" (с)Эйнштейн
E>А по поводу того, сколько людей смогут писать как Толстой -- в "Законах Паркинсона" есть замечательный рецепт: для того, чтобы было больше гениев, нужен высокий средний уровень всех остальных. Поэтому, может быть, вместо создания языков для дебилов (я не про Оберон, а вообще), тратить силы на хорошую подготовку самих программистов?
То есть, по-твоему, надо специально без всякой цели усложнять языки, только для того, чтобы таким образом "повышался" уровень программистов? Хороший программист — это не склад знаний о языке и его фишках, а умение логически мыслить.
Java — тоже язык для дебилов? Вообще, куда тратить свои силы каждый решает сам. Вот ты можешь запросто создать свой язык для "особо одарённых", а Вирт свой вклад в развитие программирования уже сделал.
D>>Мне совершенно не хочется, чтобы if можно было написать двумястами разными способами. E>Просто попробуй
Пробовал кое-где использовать ?: вместо if, не воткнуло совершенно. Это как с названиями полей и методов, мне гораздо проще использовать isDoubleBufferSupported, чем idbf.
Всё это я пишу не для того, чтобы доказать, что Оберон — это хорошо (я его в глаза не видел и видеть не хочу), а просто спорю с аналогией про естественные языки. В конце концов, международный язык сейчас английский, а он попроще русского, немецкого и т.д. будет.
Re[8]: Лекция Вирта в политехническом - впечатления
>> sch>Си -- это простой язык для выполнения сложных, очень сложных >> вещей. Именно поэтому у Си в системном программировании нет >> конкурентов и быть не может, как и не может быть конкурентов у >> ассемблера, например. >> Си — простой язык???
Вероятно было бы интересно сравнить количество понятий, которые должен знать человек, чтобы программировать на C в сравнении, скажем, с C#
Posted via RSDN NNTP Server 1.9
Re[9]: Лекция Вирта в политехническом - впечатления
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, _FRED_
E>Во многом я с тобой согласен, но, все же, позволю себе несколько ремарок.
_FR>>Ведь здесь не просто синтаксис (префикс-постфикс), но и образ мышления (прочтения), разбора алгоритма затрагивается, а научиться "вдруг" думать по-другому (отложив, например, С++ и переключившись на Ruby) способны очень не многие.
E>Имхо, во-первых, это не так. В равной степени владеть разными стилями программирования (скажем, императивным на C++ и функциональным на Эрланге) действительно сложно.
Не-а, совсем не сложно, как врач говорю . Чтобы не приводить в пример только себя — для программиста-телекомщика компании Эрикссон владеть и C++ и Erlang является нормой, так как большинство промышленных решений на Erlang содержат вставки на С++. Помнишь, мы с тобой говорили про стратегию разработки с парой языков, "низкого" и "высокого" уровня? Вот это тот самый случай.
E>Во-вторых, такие переключения полезны. Шоры с глаз снимают. Причем качественно. Это как путешествие в далекую страну -- не только свежее впечатление, но и осознание некоторых вещей, о которых раньше и не думал (но здесь все сильно индивидуально).
Угу, +1. Наконец-то до народа это начало доходить. Год назад за такую фразу тут бы порвали не задумываясь.