Дарней wrote: > C>Статический анализ поможет, но не сильно. Дело в том, что на протяжении > C>жизни приложения горячие точки могут перемещаться в коде и иногда наша > C>оптимизация может стать пессимизацией. > Ты можешь уточнить на примере, как это может произойти?
Стандартный пример, вот у нас есть код, который ищет нужных учеников:
На тестовых прогонах мы его тестируем на среднестатистической школе, в
которой больше хороших учеников, так что оптимизируется первая ветка, а
вторая ветка помещается в зону "холодного кода" и т.п.
Но если нашу программу запустят для колонии несовершеннолетних, то почти
каждый раз будет выполняться пессимизированый код. Runtime-анализатор в
этом случае просто перкомпилирует код под изменившиеся условия.
Пример полностью искусственный, но мысль должна быть понятна.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Я к тому, что для того чтобы успешно разрабатывать программы не обязательно пользоваться самым мейнстримным языком, достаточно возможности нормальной интеграции с ними.
PD>Что такое "успешно разрабатывать программы" ? Можно создать фирму, которая успешно разработает новую игру и сумеет ее продвинуть на рынок (не сама, конечно). При этом на чем игра написана — не так важно, хоть на ассемблере. Можно просто писать что-то в свое удовольствие на чем угодно, если вопрос денег не стоит. Более того, из этого иногда потрясающие результаты получаются. Но — один на тысячу. А я говорю об обычных программистах, которые работают на кого-то и за это деньги получают. Именно о них.
Путем использования "маргинального" Erlang получено сокращение сроков разработки и увеличение производительности.
Приложение вполне практическое. Это серьезно?
АХ>>Пользуясь языком, который позволит писать более продуктивно, можно получить конкурентное преимущество. Собственно пример Пола Грехема это и показал.
PD>Да ничего он не показал. Я про Лисп слышал еще на заре своей карьеры, в 80-е годы, и книги тогда издавались. И как он тогда был периферией IT, так и остался. Я же не говорю, что его нет. Просто сравнить число программирующих на Лиспе и на C++, C#. Java, VB — ну несерьезно.
Ну и ладно. Вон на 1С многие пишут. А мне то что с этого ?
PD>>>Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
АХ>>Что значит серьезное? Perl, PHP, Python серьезно? А сама разработка этих языков не поддерживается корпорациями.
PD>OK. Сколько в мире программистов на С++, C# или Java и сколько — на Python или Perl ?
Цифр не знаю, но знаю что Python используется в крупных компаниях (Google,ILM,Яндекс...)
Да и Perl там же и еще много где.
PD>PHP — да, посерьезнее. Но заметь, насколько сильно его теснит ASP.NET.
Здравствуйте, наивный рубист Ola Bini, Вы писали:
ЗХ>а) идеальных языков программирования (пока не существует)
Для мэйнстрима идеалом вполне можно считать C#.
ЗХ>б) ближе всего к идеалу Ruby, Lisp, OCaml, Erlang
Это ваше личное мнение, возможно (и скорее всего) ошибочное. Маргинальные языки не могут в принципе быть идеальными, ибо будь они таковыми, все давно бы на них перешли.
ЗХ>Все существующие сегодня варианты недостаточно хороши. Я вижу два пути вперед. Два пути, которые могут привести к "языку на 100 лет".
"Язык на 100 лет" описан только первым вариантом, второй подразумевает существование всего сегодняшнего зоопарка + "Момент".
ЗХ>Первый путь — один новый язык.
Уже смешно. Напоминает бредни школьника, узнавшего, что есть языки помимо BASIC.
ЗХ>* Он должен быть мультипарадигменным.
Классический павлино-утко-ёж — бесхвостое, лысое чудовище, тонущее в воде. Вы не ошиблись, это действительно "известный рубист" или пи%добол-теоретик?
ЗХ>* В нем должен быть статический вывод типов, где возможно.
Но тогда идёт лесом любая попытка "динамического" программинга! Мечтать-то не вредно, но надо ещё думать.
ЗХ>* Нужны все феньки функциональных языков: замыкания, first-order functions, лямбды. Иначе язык будет тупиковой ветвью эволюции.
И как же мы 30 лет программили и всё никак не вымрем как мамонты?
А что интересно, что как раз функциональные языки живут где-то сбоку-припёку, а мэйнстрим прекрасно обходится императивными/ООП языками.
ЗХ>* Нужен сборщик мусора.
Менеджер памяти — точно нужен, а вот что подразумевается под GC — ещё желательно бы точно сформулировать! Только, причём тут ЯЗЫК?
ЗХ>* JIT VM. Кажется доказанным, что виртуальные машины — большое преимущество.
Это выдача желаемого за действительное. Пока только одна единственная ВМ показала приемлемую скорость исполнения некритичных приложений, а остальные "преимущества" ещё нуждаются во всеплатформенных доказательствах.
ЗХ>* Кроме того, они могут обеспечить великолепную скорость.
Пустослов.
ЗХ>* Еще одна JIT VM.
Да хоть десяток их напиши! Опять же, каким боком это относится к языку?
ЗХ>* Реализация без виртуальной машины.
Парня понесло в дебри... Похоже, в голове у чувака каша, из которой он пытается выдавить что-то интересное. Пока лезет одна овсянка.
ЗХ>* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
Ерунда. Всё что надо, напишут заново (Це-шарпу это не помешало), а устаревшие системы... жлобы их будут использовать ещё лет 200, НАМ это зачем?
Уж с чем нужна интеграция, так это с библиотеками (.so, .dll). А что особенно интересно, как это автор собирается интегрировать мультипарадигменную кашу языков, когда даже между однопарадигменными языками такое не всегда возможно!
ЗХ>* Язык и хотя бы одна реализация промышленного качества обязаны быть с открытыми исходниками. Замкнутость языка должна быть невозможна.
Мечты юного пингвиноида. Создание качественного языка — вещь настолько трудоёмкая, что отбивать бабки придётся ещё очень долго.
ЗХ>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
А главное — в тему про "язык на 100 лет"! Буржуй-маркетолог прёт изо всех щелей...
ЗХ>* Централизованный репозиторий кода/библиотек.
Опять про что-угодно, кроме ЯЗЫКА.
ЗХ>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки.
OFFTOPIC.
ЗХ>* Конкуррентность должна быть встроена в сам язык (как Erlang или Gambit Scheme).
Можно подумать, что под DOS это кому-то помогло бы... Парень просто не понимает что такое ОС и язык.
ЗХ>* Мета-программирование должно быть естественным (примерно как в Ruby).
Ну короче, Рыбы — наше всё. Чего было слюни развозить?
Всё это "мета-" очень забавно, но для досуга. Мэйнстрим не выдержит такого наплыва программ-извращенцев.
ЗХ>* Должно быть естественным решение проблем снизу вверх, реализуя DSL'и внутри или вне языка.
Кто про что, но только дайте в компиляторе покопаться! Мальчишеские радости...
ЗХ>* В языке должны быть мощные макро-возможности, которые несложно использовать.
Понятие "мощные" — это в отдел маркетинга, нам пожалуйста конкретные описания и их жизненную необходимость.
ЗХ>* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.
Опять копания в кишках. И чего человеку неймётся?... Наверное, слишком много свободного времени.
ЗХ>Когда я перечитываю список, мне не кажется, что такой язык скоро появится.
Зачем тогда писать эту чушь? Брось косяк, да иди читать мат.часть!
ЗХ>Может быть, другой путь — правильный?
Т.е. предыдущий — был неправильный? Ты не уверен? Ты сочинил всё это "по ходу дела"? Тогда зачем это вообще писать?
ЗХ> Другой путь, который я вижу — языки становится все легче создавать
Нуёпыть! ПЛОХИЕ языки — легче создавать. Или мультипарадигменные с поддержкой "языка черепашки".
ЗХ>Чтобы эта стратегия работала, в каждом языке должна быть в первую очередь возможность интеграции с остальными.
Да-да. Нужно "всего лишь" изменить пару мильёнов строк кода во всех компиляторах и все они склеются во всеобщем оргазме! Мечтатель...
Чувак, ты ошибся форумом. Доказывают друг другу собственную крутизну — тут.
Натренируешься вести дискуссию, как умный человек, а не гопота из подворотни — welcome back!
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Чувак, ты ошибся форумом. Доказывают друг другу собственную крутизну — тут. ЗХ>Натренируешься вести дискуссию, как умный человек, а не гопота из подворотни — welcome back!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Еще раз объясняю свою позицию — я говорю только о массовом программисте.
Зачем говорить за всех?
PD>Если пойдешь игры писать — получишь хлеб с маслом за знание ассемблера. Если в научные исследования пойдешь — может быть, за Фортран. И за Аду тоже платят — в Министерстве обороны США. И, может быть, даже за Немерле тоже уже где-то платят. А массовый программист будет иметь дело с индустриальными средствами, а не пионерскими (или, наоборот, устаревшими) разработками.
Не уверен, что платят за технологии. Платят за эффективные решения, а технологии -- это всего лишь способ реализации этих решений. Докажите Министерству обороны США, что решения на Немерле будут для них выгодней чем на Аде и вам станут платить на Немерле
Здравствуйте, Dr.Gigabit, Вы писали:
>Докажите Министерству обороны США, что решения на Немерле будут для них выгодней чем на Аде и вам станут платить на Немерле
Черта с два. Тут еще 1000 прочих факторов присутствует. Корпоративные стандарты. Затраты на переобучение персонала и неизбежно связанные с этим потери в качестве на первых порах. Наработанное ПО, от которого никто не будет отказываться. Предпочтения топ-менеджера и мнение об этом его жены . И т.д.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Путем использования "маргинального" Erlang получено сокращение сроков разработки и увеличение производительности. АХ>Приложение вполне практическое. Это серьезно?
У меня такое впечатление, что ты меня не хочешь понять. Ладно, доведу до абсурда.
В 2007 году разработан новый язык для не знаю уж чего, который позволяет увеличить быстродействие в 5 раз, а сроки разработки сократить в 10 раз. Это серьезно ?
Ответ : как новое слово ИТ — это серьезно. Как пионерские исследования в этой области и даже пилотные проекты — это серьезно.Как технология — пока нет. До тех пор пока этот язык не будет принят индустрией, т.е разработаны для него промышленные (а не кустарные) компиляторы, IDE, ,библиотеки, средства сопряжения с унаследованным ПО и т.д.
И поэтому MS-DOS — это серьезно для индустрии того времени. А всякие самопальные ОС того времени — нет. Хотя среди них, возможно, была и лучшая, чем MS-DOS. И если сейчас создать новую ОС, лучшую, чем Windows и даже 100% совместимую с ней , иными словами, переписать Windows более эффективно (а это в принципе можно сделать), то это все равно для индустрии серьезно не будет. Пока Вы не найдете фирму с капиталом, позволяющим им выдвинуть этот продукт на рынок и создать конкуренцию MS.
Похоже, моя реплика привела к тому, что меня не совсем правильно поняли. Попробую сказать подробнее, что я имел в виду.
Большая часть истории ВТ прошла на моих глазах. И всяких р-р-революционных изменений, претендующих в момент их появленияна то, чтобы ниспровергнуть все и вся , а через 2-3 года прочно забытых, я видел не так уж мало.
В пионерских и пилотных исследованиях и разработках (порой и коммерческих) таких идей возникает много. Некоторые из них выглядят очень даже привлекательно с любой точки зрения, но проходит некоторое время и о них прочно забывают. Почему ?
Ответ, увы, прост — промышленность их не захотела принять. Может, они оказались чересчур революционными для своего времени. Может, они плохо стыкуются с тем, что уже есть. Может, они не вписывались в маркетинговую политику фирмы. Может, они просто не понравились руководству компании, задающей тон в данный момент на рынке. И т.д.
Вот простой пример. Алгол-60, безусловно, был во всех отношениях лучше Фортрана. Но тогдашний законодатель мод — фирма ИБМ — Фортран возлюбила, а Алгол — нет. В результате, несмотря на все его преимущества, Алгол помер (правда, породив наследника в виде Паскаля), а Фортран еще долго царствовал, да и ныне не мертв.
Другой пример. Модула-2 лучше Паскаля, наверное. Но Паскаль поддержала Борланд, а Модуле такая поддержка не была обеспечена. В ДОС еще какой-то компилятор был, а для Windows, может быть, он и существует (наверное существует), но о серьезной роли Модулы говорить не приходится.
Да и OS/2 по своим идеям была намного лучше Windows 3.x. Но Windows царствует, а где OS/2 ?
И уж совсем показательный пример. Где бы был Бейсик без Микрософт (или лично Б. Гейтса) ? . А что, Бейсик — это хорошо ? Это новые идеи ?
Итак, хорошие на первый взгляд решения, предлагаемые в пионерской области, далеко не всегда востребуются индустрией. У нее свои законы, свои правила. И эти правила порой весьма далеки от академических нравов или философских соображений.
А то, что промышленностью не будет принято — неизбежно уйдет на периферию. Это не значит, что оно существовать не будет. И не значит, что этим вообще не надо заниматься. И даже деньги зарабатывать на этом можно, и даже немалые. Это просто значит, что это будет в стороне от промышленного производства ПО. И для большинства практикующих программистов это — не более, чем возможность подискутировать в форумах вроде этого в свободное от работы время.
Возвращаясь к языкам программирования, выскажу мысль, с которой многие, может быть, не согласятся. Единственное серьезное нововведение, принятое промышленностью с 80-х годов — это объектно-ориентированное программирование. Как и положено тому, что побеждает, его победа была внушительной и быстрой. Оно действительно существенно изменило подход к разработке ПО. А все остальное- так, мелочи. И за исключением ООП С, а то и С#, не очень отличаются от Фортрана. Только ради бога, не надо подозревать меня в незнании последнего и напоминать мне об отсутвтвии в нем порядочного цикла, указателей и динамического выделения памяти. Мелочи все это...
Разумеется, пионерскими исследованиями и разработками заниматься надо, в конце концов именно из них и выходит то, что впоследствии будет принято индустрией. Но бросаться на каждую новую штучку и объявлять ее р-р-революцтонным нововведением — простите, смешно.
Лично мое отношение ко всем этим нововведениям — скептическое. В конце концов язык — это 1% от того, что должен знать программист. И освоить новый язык — не бог весть какой сложности задача. Освоили же ООП те, кто начинал до его промышленного появления, и ничего! Так что поживем — увидим. Если это действительно будет принято индустрией — освоим и будем употреблять. А если нет — значит, не судьба, и не стоит тратить на это время.
Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
Позволю себе парочку ремарок
PD>Другой пример. Модула-2 лучше Паскаля, наверное. Но Паскаль поддержала Борланд, а Модуле такая поддержка не была обеспечена. В ДОС еще какой-то компилятор был, а для Windows, может быть, он и существует (наверное существует), но о серьезной роли Модулы говорить не приходится.
На момент, когда Borlad выпустил Turbo Pascal, это была маленькая, мало кому вообще известная комания (см., например, Wikipedia). И поднялись они из-за того, что предложили самый лучший на тот момент компилятор Паскаля. Но Паскаль к тому времени уже был восстребован, что и позволило Turbo Pascal-ю стать успешно продаваемым продуктом (т.е. Borland продавал то, что было нужно покупателям, он не мог тогда навязать Паскаль тем, кому Паскаль не был нужен).
PD>Лично мое отношение ко всем этим нововведениям — скептическое. В конце концов язык — это 1% от того, что должен знать программист. И освоить новый язык — не бог весть какой сложности задача.
Может быть среди "знаний" знание языка -- это 1%. А вот среди "умений" владение языком занимает гораздо больший процент. Поскольку на основе "знаний" легко пытаться писать на C++, как на Smalltalk, на Ruby как на C++, а на Java -- как на C++. Только программы получаются такими, что сопровождать их не хочется.
К сожалению, впитывание идиом языка, освоение его best practices, требует гораздо больше времени и сил, чем простое ознакомление с синтаксисом, библиотеками и средствами разработки. И здесь нужен личный опыт, который можно приобрести только программируя на языке, а не "зная" его.
PD>Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде. Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода. Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, AndrewVK, Вы писали:
> В следующий раз будет бан.
Был не прав, вспылил. Извиняюсь, конечно.
Но на своей точке зрения настаиваю: просто глупые мечты какие-то, а не повод для обсуждения.
Как правильно ПД далее указывает, даже если язык позволяет в 10 раз быстрее программить, от этого он не становится более "промышленным". А всяких маргинальных языков и так сейчас полно.
Спрашивается, чего людям нехватает? Есть С++, C#, Java... этого хватает за глаза.
E>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде.
Вот тут ты, имхо, точно подметил. Реально очень большая проблема, конечно, наверное, где-то уже обучают, но далеко не везде. Еще сейчас, по ходу работы, сталкиваюсь c софтом который написан "на коленке", потом дописан еще кем-то, потом еще кем-то... и опа.. поддерживать нереально... при том софт разный и коммерческий, и для бюджетной сферы... во втором случае все гораздо хуже...
E> Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода.
Наверно в этом и вопрос — как перейти от разработки кода в 100 строк к коду 20к-30к строк.
E>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
Думаю, было бы лучше дать возможность сделать проект на любом из изучаемых языков. А кто и что выберет, имхо, его право. Тем более какой-то язык может подойди лучше, банально из-за существующих сторонних библиотек и т.п.
Здравствуйте, Plague, Вы писали:
E>>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде. P>Вот тут ты, имхо, точно подметил. Реально очень большая проблема, конечно, наверное, где-то уже обучают, но далеко не везде. Еще сейчас, по ходу работы, сталкиваюсь c софтом который написан "на коленке", потом дописан еще кем-то, потом еще кем-то... и опа.. поддерживать нереально... при том софт разный и коммерческий, и для бюджетной сферы... во втором случае все гораздо хуже...
Ну я другой аспект хотел подчеркнуть -- в команде сразу обнаруживается, что самое важное -- это человеческий фактор, человеческие взаимоотношения, а технология и проектные решения -- все это вторично или третично
А вот как вести себя в команде, как учитывать мнения других членов команды, как вести семинары, как фиксировать результаты обсуждений, как выстраивать контроль за работой команды, как организовывать поощрения и наказания -- это вообще отсутствует как класс предметов в учебной программе. Математиков-педагогов хоть какой-то педагогике и психологии обучают, а программистов и прикладных математиков -- вообще ничему подобному не учат.
E>> Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода. P>Наверно в этом и вопрос — как перейти от разработки кода в 100 строк к коду 20к-30к строк.
Как раз такие переходы у нас были не редкостью. Зачастую студент привлекался научным руководителем к работе над каким-нибудь крупным проектом (что шло как курсовые и дипломный проект). Но вот помощи студенту особой не было. Такое обучение плаванию по "бразильской системе" -- бросили в воду, дальше сам. Если есть голова на плечах, если где-то чего-то прочитал, то в конце-концов разберешься, как модули организовывать, как функциональность по ним распределять, как поддерживать все это.
E>>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект). P>Думаю, было бы лучше дать возможность сделать проект на любом из изучаемых языков. А кто и что выберет, имхо, его право. Тем более какой-то язык может подойди лучше, банально из-за существующих сторонних библиотек и т.п.
Так и я о том -- нашел проект (тем более если это часть производственной практике) для которого требуется Немерле -- делай его на Немерле. Не должно быть догматических ограничений, вроде "в мире правят C++, Java и C#", поэтому на Немерле ничего нельзя делать на производственной практике, пока он в этот список не войдет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>На момент, когда Borlad выпустил Turbo Pascal, это была маленькая, мало кому вообще известная комания
Как, впрочем, и Микрософт . В те времена в области персональных машин крупных компаний и не было. Тогда можно было нескольким фирмам делать компиляторы с С (MS, Borland, Watcom, Zortech..). Попробуйте сейчас
E>Может быть среди "знаний" знание языка -- это 1%. А вот среди "умений" владение языком занимает гораздо больший процент. Поскольку на основе "знаний" легко пытаться писать на C++, как на Smalltalk, на Ruby как на C++, а на Java -- как на C++. Только программы получаются такими, что сопровождать их не хочется.
И что ? Я по первому языку фортранщик (был и Алгол, но недолго). И цикл с GOTO назад для меня был привычкой и нормой. Но не помню, чтобы я хоть раз впоследствии такое написал на Паскале или С. Это все очень быстро усваивается.
E>К сожалению, впитывание идиом языка, освоение его best practices, требует гораздо больше времени и сил, чем простое ознакомление с синтаксисом, библиотеками и средствами разработки. И здесь нужен личный опыт, который можно приобрести только программируя на языке, а не "зная" его.
+1
E>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде. Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода.
Больной вопрос. В общем, согласен. Практически же это связано с таким количеством прочих факторов, что их обсуждение займет десятки страниц. Учебный график и его выполнение. Разный уровень студентов. Наличие серьезной задачи. Прочие дисциплины (от них же никто не освободит, а у студентов 30-35 часов в неделю, и только 4 из них — у меня). И т.д. И т.п.
То, что ты хочешь — в теории верно и разумно, а на практике порой просто неосуществимо. То , что ты хочешь, можно бы реализовать в виде неких курсов, когда учащиеся готовы на это тратить по 8 часов в неделю на протяжении месяца и более. Увы, это очень далеко от вузовской реальности.
>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
Роль спецкурса не в этом. Его назначение — ознакомить с тем, что есть, дать направление, а там уж пусть сами вникают в глубину, если им надо. Спецкурс полугодовой у нас — 36 часов, годовой — 72 часа. Никаких серьезных программных продуктов за такое время не делают, а ведь большая часть спецкурса или вообще весь — это лекции.
Но, похоже, модератор выделит нас в отдельную ветку в "Образование и наука"
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>И что ? Я по первому языку фортранщик (был и Алгол, но недолго). И цикл с GOTO назад для меня был привычкой и нормой. Но не помню, чтобы я хоть раз впоследствии такое написал на Паскале или С. Это все очень быстро усваивается.
GOTO -- это цветочки по сравнению с выбором между использованием лямбды или объекта-функтора. Например, в Java я могу пользоваться только реализациями интерфейсов (адаптеры разные, листенеры), как в виде именнованых, так и в виде анонимных классов. Такой подход, к примеру, может один к одному использоваться в Ruby. Но может быть гораздо проще применять лямбды. Либо наоборот, лямбды настолько часто используются, что временами не замечается, когда было бы полезно перейти к объектам.
PD>Больной вопрос. В общем, согласен. Практически же это связано с таким количеством прочих факторов, что их обсуждение займет десятки страниц. Учебный график и его выполнение. Разный уровень студентов. Наличие серьезной задачи. Прочие дисциплины (от них же никто не освободит, а у студентов 30-35 часов в неделю, и только 4 из них — у меня). И т.д. И т.п. PD>То, что ты хочешь — в теории верно и разумно, а на практике порой просто неосуществимо. То , что ты хочешь, можно бы реализовать в виде неких курсов, когда учащиеся готовы на это тратить по 8 часов в неделю на протяжении месяца и более. Увы, это очень далеко от вузовской реальности.
Это я и сам знаю. Знаю, что и просвета не видно. Особенно в ситуации, когда зарплата преподавателей зависит от количества отчитанных часов и заданных лабораторных -- в таких условиях студентов грузят так, что тем и дышать некогда.
>>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
PD>Роль спецкурса не в этом. Его назначение — ознакомить с тем, что есть, дать направление, а там уж пусть сами вникают в глубину, если им надо. Спецкурс полугодовой у нас — 36 часов, годовой — 72 часа. Никаких серьезных программных продуктов за такое время не делают, а ведь большая часть спецкурса или вообще весь — это лекции.
Я против того, чтобы на каком-то этапе запретить пользоваться языком только из-за того, что он не в мейнстриме.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.