Поскольку тема немного изменила курс (напомню, изначально она была про MIT, Адельсона и Питон), предлагаю выделить отдельную ветку начиная с твоего сообщения.
Тема в принципе интересна. Её можно озаглавить например так — "Скелеты в шкафу Немерле".
Там можно детально обсудить и недостатки, и препятствия для продвижения в массы.
E> В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности.
И этот (весьма спорный) тезис тоже.
Остальным участникам тоже предлагаю рассмотреть возможность повесить бомбочку.
В целом все это хорошо и правильно.
Но есть тут один такой моментик....
E>У ДеМарко и Листера в Peopleware говорилось приблизительно следующее (по памяти, книги нет под рукой): E>
E>Не нужно расчитывать, что есть язык программирования или технология, которая способна поднять вашу производительность на порядок. Ведь вы живете не в изоляции и вы не настолько глупы, чтобы пропустить такой замечательный язык.
E>И, что не удивительно, они до сих пор правы. В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности. Причем не при первом применении, а при длительном.
Так вот я, что характерно, с этим в корне несогласен. Не в том смысле, что "уж я-то знаю такую технологию", я в принципе. Как и с тезисами вроде "для профессионала все языки программирования одинаковы" и т.п.
Я убежден, что легкий, мощный, "хорошо ложащийся в руку" инструмент (в совмещении, вестимо, со светлой головой) способен давать разницы в основных параметрах разработки (продуктивность, надежность, минималистичность, и т.п.) именно что на порядки.
Очень грубый пример: в общем случае, программист на Фортране будет существенно менее продуктивен, чем программист на C#, вне зависимости от их опыта (если у обоих он лежит в рамках "профессиональный прогарммист").
Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
Другое дело, что (холивар! холивар!) я, честно говоря, не вижу, какие из возможностей Nemerle делают его на порядок круче других языков с поддержкой ОО и функционального программирования (примем, что синтаксические макросы — мощный, но не единственный инструмент контроля синтаксиса; а type inference увеличивает более надежность, нежели продуктивность).
Здравствуйте, eao197, Вы писали:
E>Так вот навязчивая реклама Nemerle со стороны VladD2 и, например, WolfHound-а, как раз и напоминает что-то среднее между пропагандой очередной серебряной пули и рекламными отчетами о повышении эффективности при первом применении нового инструмента.
Это экстремизм, которому мем не менее надо отдать должное. Главное, что он не разрушительный а пропагандистский. Но меня все равно напрягает этот тон.
Вот сначала был MS-DOS и язык Си. И некоторые взвыли от оргазма — Ооо! Си — это круто! Ну в общем, можно согласиться, хотя был еще и турбо-паскаль.
Потом пошел Windows — и некоторые взвыли — Ооо! Windows — это круто! Хотя программирование в нем превратилось в длинный switch-case и большинство просто фигачило этот switch, совершенно не задумываясь об алгоритмической сущности. При этом слова типа "LPSTR" вместо "char*" считались признаками хорошего тона. А что такое "LP"? А это — сокращение от "long pointer". А что такое "long pointer" — кто-нибудь сейчас помнит? Вот то-то и оно.
Потом на горизонте майнстрима возник некий C++ и выдвинули MFC. И некоторые взвыли от оргазма — Ооо, MFC — круто, WinAPI — отсттой! A Borland OWL — это просто смешно. Лично я был в рядах этих некоторых.
Потом сделали OLE и OLE2 и некоторые взвыли от оргазма — Ооо, OLE — круто. А то что в MFС чисто для обертки OLE2 было нафигачено более 200000 строчек кода, так это фигня.
Потом некоторые осознали, что MFC это слишком тяжеловесно, а вот есть ATL — и они взвыли от оргазма, что нашлось применение шаблонам и множественному наследованию. Ооо! Круто
При этом им парили, что венгерская нотация это правильно и круто. И некоторые говорили, что если ты не используешь венгерскую нотацию, то ты неуч и дебил. А венгерская нотация — это Ооо, круто!
Потом сказали, что венгерская нотация — это неправильно и не круто. Выплюньте! И некоторые взвыли от оргазма — Ооо! Венгерская нотация маздай, а вот именование переменных по-человечески — рулез.
Потом им начали парить, что C++ это полный отстой, а вот C# — рулез форева. И некотоые взвыли от оргазма — Ооо, да! C# рулез. C++ маздай!
Ну а теперь кто-то вбросил девку по имени Nemerle в полк. Некоторые взвыли от оргазма. Девка рожать после этого сможет? Искренне надеюсь что сможет, поскольку концепции Nemerle мне симпатичны, а вот все это броуновское движение вокругт нее — не очень.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Очень грубый пример: в общем случае, программист на Фортране будет существенно менее продуктивен, чем программист на C#, вне зависимости от их опыта (если у обоих он лежит в рамках "профессиональный прогарммист").
Не гарантировано, как говорится it depends
ЗХ>Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
Тут тоже не всё так тривиально:
кроме самих этих "фич" нужно ещё чтобы программист мог ими пользоваться, а это уже сильно зависит от его опыта, класса и т.д.
А у eao197 речь, насколько я понимаю, речь идёт об "усреднённом" программисте, когда технология становится общеупотребительной, т.е. как раз с этими характеристиками девелопера могут возникнуть "неувязочки"
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
E>> В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности.
LCR>И этот (весьма спорный) тезис тоже.
Здесь да, погорячился. Достаточно вспомнить переход от машинных кодов к ассемблеру и от ассемблера к языкам высокого уровря (к Fortran, например). Или же появления Domain Specific языков (вроде SQL), которые проводили прорывы в своих областях.
Поэтому делаю оговорку: речь идет о языках высокого уровня общего назначения. И не на одной конкретной задаче, а на совокупрости разных задач. Например, Prolog даст фору C++ при распознавании образов, но сольет при написании текстового редактора.
Этот же комментарий относится и к замечанию Зверька Харьковского, но на два одинаковых возражения я решил ответить в одном письме.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Курилка, Вы писали:
ЗХ>>Очень грубый пример: в общем случае, программист на Фортране будет существенно менее продуктивен, чем программист на C#, вне зависимости от их опыта (если у обоих он лежит в рамках "профессиональный прогарммист").
К>Не гарантировано, как говорится it depends
ЗХ>>Тут интересная корреляция с понятием "мощности" языка (по-моему у Грэма где-то есть об этом, когда он Лисп воспевает): добавление в язык некоторых "фич" увеличивает лаконичность и выразительность кода действительно на порядки.
К>Тут тоже не всё так тривиально: К>кроме самих этих "фич" нужно ещё чтобы программист мог ими пользоваться, а это уже сильно зависит от его опыта, класса и т.д. К>А у eao197 речь, насколько я понимаю, речь идёт об "усреднённом" программисте, когда технология становится общеупотребительной, т.е. как раз с этими характеристиками девелопера могут возникнуть "неувязочки"
По обоим пунктам сразу отвечаю.
Я упоминал "светлую голову"
Человек, не способный освоить новую идею, потому что "слишком тупой", или потому что ему "надо еще до обеда написать 1000 строчек", мне не очень интересен. Хотя и удобен для сведения любого обсуждения к флейму.
Здравствуйте, McSeem2, Вы писали:
MS>Вот сначала был MS-DOS и язык Си. И некоторые взвыли от оргазма — Ооо! Си — это круто! Ну в общем, можно согласиться, хотя был еще и турбо-паскаль.
[SKIP]
Это Вы свою историю рассказываете?
MS>Ну а теперь кто-то вбросил девку по имени Nemerle в полк. Некоторые взвыли от оргазма. Девка рожать после этого сможет? Искренне надеюсь что сможет, поскольку концепции Nemerle мне симпатичны, а вот все это броуновское движение вокругт нее — не очень.
Девка сможет рожать лишь до тех пор пока не бросят новую.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Lazy Cjow Rhrr, Вы писали:
E>>> В истории развития языков программирования не было случая, когда бы новый ЯП или технология создавали такой выдающийся прорыв в производительности.
LCR>>И этот (весьма спорный) тезис тоже.
E>Здесь да, погорячился. Достаточно вспомнить переход от машинных кодов к ассемблеру и от ассемблера к языкам высокого уровря (к Fortran, например). Или же появления Domain Specific языков (вроде SQL), которые проводили прорывы в своих областях.
E>Поэтому делаю оговорку: речь идет о языках высокого уровня общего назначения. И не на одной конкретной задаче, а на совокупрости разных задач. Например, Prolog даст фору C++ при распознавании образов, но сольет при написании текстового редактора.
E>Этот же комментарий относится и к замечанию Зверька Харьковского, но на два одинаковых возражения я решил ответить в одном письме.
Эх, не хотелось мне сводить свою мысль к конкретным примерам (потому что это обычно приводит к опровержению примеров, а не идей), ну да ладно.
Я имел в виду именно языки общего назначения. Примеры:
* язык с функциями высшего порядка намного мощней языка без оных.
* язык, имеющий встроенные средства для работы с составными структурами данных (туплы, хеши; да хоть бы и строки, без которых в С++ мы знаем что творится с совместимостью библиотек), намного мощнее языка без оных.
* язык, позволяющий тем или иным способом создавать удобные in-language DSL.
* предположительно, язык со встроенными средствами конкурентного программирования будет тоже намного мощнее (хотя и не уверен, что на большом числе задач).
Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>По обоим пунктам сразу отвечаю. ЗХ>Я упоминал "светлую голову" ЗХ>Человек, не способный освоить новую идею, потому что "слишком тупой", или потому что ему "надо еще до обеда написать 1000 строчек", мне не очень интересен. Хотя и удобен для сведения любого обсуждения к флейму.
Как раз eao197 упирал, насколько я вижу, именно на длительное и более широкое использование, а не просто круг "светлых голов":
Но суть в другом, в том, что сейчас для сторонников Scala/Nemerle "золотой век" -- их окружают не только единомышленники, но люди с аналогичными способностями и желанием изучать, и применять что-то новое. Поэтому и кажется, что все вокруг так замечательно и решения сложных задач совместными усилиями находится элементарно. Но на подходе мы, скептики и консерваторы. Для которых новый язык это всего лишь лишние заморочки по переходу на новый инструмент. И которым преимущества хвостовой рекурсии придется объяснять так же долго и муторно (и не один раз), как когда-то приходилось доказывать преимущества наследования и полиморфизма (а потом много бить по рукам за их доведенное до маразма использование). Так что готовтесь, господа, легкой жизни не будет.
"Светлые головы" — это хорошо, но реалии несколько иные бывают
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта:
Пишу длинно, поскольку нет времени писать коротко.
Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>Это все примеры "фич, которые могут на порядок повысить выразительность и лаконичность". И с огромным трудом имитируются с помощью отдельных библиотек.
E>Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта: E>
E>Пишу длинно, поскольку нет времени писать коротко.
По мне, так связано. И Декарт это подтверждает
E>Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
Здравствуйте, eao197, Вы писали:
E>Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
Т.е. получаем по сути 2 пути развития софтостроения (в рамках одной конторы): экстенсивный, за счёт набора большего числа сотрудников, возможно не высокого класса; интенсивный — за счёт тщательного отбора высококлассных специалистов.
И 2-й путь гораздо сложнее, т.к. и отобрать довольно сложно (среди общего числа программистов) + вероятность встретить (и ещё мотивировать) таких людей не очень велика, а за счёт небольшого числа сотрудников большие объёмы задач решать несколько проблемно. Из реальных примеров, о которых я знаю, только про яндекс можно сказать, что они идут по 2-му пути. Про софтверные корпорации уж точно такого сказать нельзя.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
Просто речь идёт о реальном применении в реальных, крупных проектах, а не теоретических изысканиях каких-нибудь гениальных аспирантов
Ответь, если не трудно, на вопрос: в той компании, где ты работаешь (если она, конечно, не ограничивается парой человек), каждый программист является этой самой "светлой головой"?
Если так — хочу работать в вашей конторе
Здравствуйте, Зверёк Харьковский, Вы писали:
E>>Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта: E>>
E>>Пишу длинно, поскольку нет времени писать коротко.
ЗХ>По мне, так связано. И Декарт это подтверждает
Счастливчик
А по мне, так на написание функции из 5-ти строк нужно гораздо больше времени, чем на написание функции из 15-ти строк.
E>>Кстати, я согласен с добавлениями Курилки -- пока языком занимаются только светлые головы (как сейчас происходит с Nemerle) -- все здорово. Но светлых голов не так уж и много.
ЗХ>Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
Но я о другом напомню:
Но сражаясь за красоту
Дурни подняли пыль
(Крематорий, Винные мемуары).
Как только масса народу начнет обсуждать правила написания программ/систем на Scala/Nemerle, поднимится слишком много пыли.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Курилка, Вы писали:
К>Т.е. получаем по сути 2 пути развития софтостроения (в рамках одной конторы): К>экстенсивный, за счёт набора большего числа сотрудников, возможно не высокого класса; К>интенсивный — за счёт тщательного отбора высококлассных специалистов.
Об этом уже давно говорят и ДеМарко с Листером, и Ларри Константин, и Брукс.
К>Из реальных примеров, о которых я знаю, только про яндекс можно сказать, что они идут по 2-му пути. Про софтверные корпорации уж точно такого сказать нельзя.
Ну мы еще стараемся по второму пути идти Хотя нам до софтверной копорации еще далеко
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Курилка, Вы писали:
ЗХ>>Ну, обратно сводить все к диллеме "светлая голова"/"средний прогарммист" мне лень.
К>Ответь, если не трудно, на вопрос: в той компании, где ты работаешь (если она, конечно, не ограничивается парой человек), каждый программист является этой самой "светлой головой"?
Угу. Голова тут одна, но на светлость ее я не жалуюсь
Тут, по сути, и проходит граница спора — в том, что я не подхожу к технологиям с меркой "а что если мне придется ее использовать в большом коллективе". Это чисто личное — я не переношу коллективов в принципе. Потому мне и интереснее обсуждать соотношения язык/личность, а не инструмент/толпа.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Зверёк Харьковский, Вы писали:
E>>>Да, выразительность и лаконичность повысят. Но повышение выразительности не связано прямой зависимостью с повышением производительности. Как у Декарта: E>>>
E>>>Пишу длинно, поскольку нет времени писать коротко.
ЗХ>>По мне, так связано. И Декарт это подтверждает
E>Счастливчик E>А по мне, так на написание функции из 5-ти строк нужно гораздо больше времени, чем на написание функции из 15-ти строк.
Ну да Так будет всегда.
Но вопрос в том, что именно будет в этих 5/15 строках — а это вопрос лаконичности (в 5 строках на Руби больше мудрости, чем в 5 строках на С).
Здравствуйте, eao197, Вы писали:
E>Поддерживаю. Более того, я сторонник того, чтобы проектами занимались небольшие команды хороших специалистов (как операционные бригады у Брукса).
Здравствуйте, eao197, Вы писали:
E>Ну мы еще стараемся по второму пути идти Хотя нам до софтверной копорации еще далеко
Ммм, далековато вы от Москвы
А если по существу — у меня очень большие сомнения, что большую компанию с таким подходом можно построить. Просто большая контора — бюрократия, а где бюрократия, там часто ведут себя согласно предписаниям, а чётких предписаний, как отобрать высококлассного спеца, думаю врядли можно составить.