Re[7]: Темные века программирования
От: Cyberax Марс  
Дата: 05.10.06 14:09
Оценка: 2 (1)
Дарней wrote:
> C>Статический анализ поможет, но не сильно. Дело в том, что на протяжении
> C>жизни приложения горячие точки могут перемещаться в коде и иногда наша
> C>оптимизация может стать пессимизацией.
> Ты можешь уточнить на примере, как это может произойти?
Стандартный пример, вот у нас есть код, который ищет нужных учеников:
void processPupils()
{
    for(int f=0;f<pupilNum;f++)
    {
        if (pupilIsGood(pupil[f]))
        {
            ...
            pupil[f].giveIceCream();
            ...
        } else
        {
            ...
            pupil[f].punish();
            ...
        }
    }
}


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

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

Пример полностью искусственный, но мысль должна быть понятна.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[6]: Темные века программирования
От: Андрей Хропов Россия  
Дата: 05.10.06 14:31
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Андрей Хропов, Вы писали:


АХ>>Я к тому, что для того чтобы успешно разрабатывать программы не обязательно пользоваться самым мейнстримным языком, достаточно возможности нормальной интеграции с ними.


PD>Что такое "успешно разрабатывать программы" ? Можно создать фирму, которая успешно разработает новую игру и сумеет ее продвинуть на рынок (не сама, конечно). При этом на чем игра написана — не так важно, хоть на ассемблере. Можно просто писать что-то в свое удовольствие на чем угодно, если вопрос денег не стоит. Более того, из этого иногда потрясающие результаты получаются. Но — один на тысячу. А я говорю об обычных программистах, которые работают на кого-то и за это деньги получают. Именно о них.


Хорошо, вот недавний пример из российской практики:
Re[7]: Практическое применение
Автор: Alex EXO
Дата: 07.09.06


Путем использования "маргинального" 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.


Не знаю, я не проф в веб-разработке.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Темные века программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.10.06 15:24
Оценка:
Здравствуйте, eao197, Вы писали:

E>Наивно, имхо, в вотчине VladD2


Это чего это тут вотчина VladD2?
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re: Темные века программирования
От: quadrochups ЮАР  
Дата: 05.10.06 15:27
Оценка: 3 (1) +1 -10 :))) :))) :))
Здравствуйте, наивный рубист 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'и внутри или вне языка.


Кто про что, но только дайте в компиляторе покопаться! Мальчишеские радости...

ЗХ>* В языке должны быть мощные макро-возможности, которые несложно использовать.


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

ЗХ>* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.


Опять копания в кишках. И чего человеку неймётся?... Наверное, слишком много свободного времени.

ЗХ>Когда я перечитываю список, мне не кажется, что такой язык скоро появится.


Зачем тогда писать эту чушь? Брось косяк, да иди читать мат.часть!

ЗХ>Может быть, другой путь — правильный?


Т.е. предыдущий — был неправильный? Ты не уверен? Ты сочинил всё это "по ходу дела"? Тогда зачем это вообще писать?

ЗХ> Другой путь, который я вижу — языки становится все легче создавать


Нуёпыть! ПЛОХИЕ языки — легче создавать. Или мультипарадигменные с поддержкой "языка черепашки".

ЗХ>Чтобы эта стратегия работала, в каждом языке должна быть в первую очередь возможность интеграции с остальными.


Да-да. Нужно "всего лишь" изменить пару мильёнов строк кода во всех компиляторах и все они склеются во всеобщем оргазме! Мечтатель...

Вобщем, полный бред и дилетантство. Незачёт.
Re[3]: Темные века программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.10.06 15:34
Оценка: +1
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>массовое (вечное слово "промышленный")


Это не одно и то же, а ортогональные понятия. Первое имеет отношение к количеству использований, второе скорее к качеству реализации и поддержки.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Темные века программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.10.06 15:44
Оценка:
Здравствуйте, quadrochups, Вы писали:

Q>пи%добол-теоретик?


Q>Незачёт.


В следующий раз будет бан.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Темные века программирования
От: Зверёк Харьковский  
Дата: 05.10.06 16:18
Оценка: +8 :)))
Чувак, ты ошибся форумом. Доказывают друг другу собственную крутизну — тут.
Натренируешься вести дискуссию, как умный человек, а не гопота из подворотни — welcome back!
FAQ — це мiй ай-кью!
Re[3]: Темные века программирования
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.10.06 16:46
Оценка: :))) :)))
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Чувак, ты ошибся форумом. Доказывают друг другу собственную крутизну — тут.

ЗХ>Натренируешься вести дискуссию, как умный человек, а не гопота из подворотни — welcome back!

Ты меня конечно извини, но модератор здесь я.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Темные века программирования
От: Андрей Хропов Россия  
Дата: 05.10.06 16:58
Оценка: +5 :)
Здравствуйте, quadrochups, Вы писали:

Че-то ты как-то слабо критику навел. Неопытный ты еще тролль.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Темные века программирования
От: Dr.Gigabit  
Дата: 05.10.06 18:53
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Еще раз объясняю свою позицию — я говорю только о массовом программисте.

Зачем говорить за всех?

PD>Если пойдешь игры писать — получишь хлеб с маслом за знание ассемблера. Если в научные исследования пойдешь — может быть, за Фортран. И за Аду тоже платят — в Министерстве обороны США. И, может быть, даже за Немерле тоже уже где-то платят. А массовый программист будет иметь дело с индустриальными средствами, а не пионерскими (или, наоборот, устаревшими) разработками.

Не уверен, что платят за технологии. Платят за эффективные решения, а технологии -- это всего лишь способ реализации этих решений. Докажите Министерству обороны США, что решения на Немерле будут для них выгодней чем на Аде и вам станут платить на Немерле
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Темные века программирования
От: Pavel Dvorkin Россия  
Дата: 06.10.06 02:53
Оценка: +2
Здравствуйте, Dr.Gigabit, Вы писали:

>Докажите Министерству обороны США, что решения на Немерле будут для них выгодней чем на Аде и вам станут платить на Немерле


Черта с два. Тут еще 1000 прочих факторов присутствует. Корпоративные стандарты. Затраты на переобучение персонала и неизбежно связанные с этим потери в качестве на первых порах. Наработанное ПО, от которого никто не будет отказываться. Предпочтения топ-менеджера и мнение об этом его жены . И т.д.
With best regards
Pavel Dvorkin
Re[7]: Темные века программирования
От: Pavel Dvorkin Россия  
Дата: 06.10.06 03:04
Оценка: +1
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Путем использования "маргинального" Erlang получено сокращение сроков разработки и увеличение производительности.

АХ>Приложение вполне практическое. Это серьезно?

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

В 2007 году разработан новый язык для не знаю уж чего, который позволяет увеличить быстродействие в 5 раз, а сроки разработки сократить в 10 раз. Это серьезно ?

Ответ : как новое слово ИТ — это серьезно. Как пионерские исследования в этой области и даже пилотные проекты — это серьезно.Как технология — пока нет. До тех пор пока этот язык не будет принят индустрией, т.е разработаны для него промышленные (а не кустарные) компиляторы, IDE, ,библиотеки, средства сопряжения с унаследованным ПО и т.д.

И поэтому MS-DOS — это серьезно для индустрии того времени. А всякие самопальные ОС того времени — нет. Хотя среди них, возможно, была и лучшая, чем MS-DOS. И если сейчас создать новую ОС, лучшую, чем Windows и даже 100% совместимую с ней , иными словами, переписать Windows более эффективно (а это в принципе можно сделать), то это все равно для индустрии серьезно не будет. Пока Вы не найдете фирму с капиталом, позволяющим им выдвинуть этот продукт на рынок и создать конкуренцию MS.
With best regards
Pavel Dvorkin
Re[2]: Темные века программирования
От: Pavel Dvorkin Россия  
Дата: 06.10.06 04:41
Оценка: 7 (1) +2
Похоже, моя реплика привела к тому, что меня не совсем правильно поняли. Попробую сказать подробнее, что я имел в виду.

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

В пионерских и пилотных исследованиях и разработках (порой и коммерческих) таких идей возникает много. Некоторые из них выглядят очень даже привлекательно с любой точки зрения, но проходит некоторое время и о них прочно забывают. Почему ?

Ответ, увы, прост — промышленность их не захотела принять. Может, они оказались чересчур революционными для своего времени. Может, они плохо стыкуются с тем, что уже есть. Может, они не вписывались в маркетинговую политику фирмы. Может, они просто не понравились руководству компании, задающей тон в данный момент на рынке. И т.д.

Вот простой пример. Алгол-60, безусловно, был во всех отношениях лучше Фортрана. Но тогдашний законодатель мод — фирма ИБМ — Фортран возлюбила, а Алгол — нет. В результате, несмотря на все его преимущества, Алгол помер (правда, породив наследника в виде Паскаля), а Фортран еще долго царствовал, да и ныне не мертв.

Другой пример. Модула-2 лучше Паскаля, наверное. Но Паскаль поддержала Борланд, а Модуле такая поддержка не была обеспечена. В ДОС еще какой-то компилятор был, а для Windows, может быть, он и существует (наверное существует), но о серьезной роли Модулы говорить не приходится.

Да и OS/2 по своим идеям была намного лучше Windows 3.x. Но Windows царствует, а где OS/2 ?

И уж совсем показательный пример. Где бы был Бейсик без Микрософт (или лично Б. Гейтса) ? . А что, Бейсик — это хорошо ? Это новые идеи ?


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

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

Возвращаясь к языкам программирования, выскажу мысль, с которой многие, может быть, не согласятся. Единственное серьезное нововведение, принятое промышленностью с 80-х годов — это объектно-ориентированное программирование. Как и положено тому, что побеждает, его победа была внушительной и быстрой. Оно действительно существенно изменило подход к разработке ПО. А все остальное- так, мелочи. И за исключением ООП С, а то и С#, не очень отличаются от Фортрана. Только ради бога, не надо подозревать меня в незнании последнего и напоминать мне об отсутвтвии в нем порядочного цикла, указателей и динамического выделения памяти. Мелочи все это...

Разумеется, пионерскими исследованиями и разработками заниматься надо, в конце концов именно из них и выходит то, что впоследствии будет принято индустрией. Но бросаться на каждую новую штучку и объявлять ее р-р-революцтонным нововведением — простите, смешно.

Лично мое отношение ко всем этим нововведениям — скептическое. В конце концов язык — это 1% от того, что должен знать программист. И освоить новый язык — не бог весть какой сложности задача. Освоили же ООП те, кто начинал до его промышленного появления, и ничего! Так что поживем — увидим. Если это действительно будет принято индустрией — освоим и будем употреблять. А если нет — значит, не судьба, и не стоит тратить на это время.

Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
With best regards
Pavel Dvorkin
Re[3]: Темные века программирования
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.10.06 06:29
Оценка: +11
Здравствуйте, Pavel Dvorkin

Позволю себе парочку ремарок

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++.
Re[3]: Темные века программирования
От: quadrochups ЮАР  
Дата: 06.10.06 07:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

> В следующий раз будет бан.


Был не прав, вспылил. Извиняюсь, конечно.

Но на своей точке зрения настаиваю: просто глупые мечты какие-то, а не повод для обсуждения.
Как правильно ПД далее указывает, даже если язык позволяет в 10 раз быстрее программить, от этого он не становится более "промышленным". А всяких маргинальных языков и так сейчас полно.
Спрашивается, чего людям нехватает? Есть С++, C#, Java... этого хватает за глаза.
Re[4]: Темные века программирования
От: Plague Россия  
Дата: 06.10.06 07:31
Оценка:
E>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде.
Вот тут ты, имхо, точно подметил. Реально очень большая проблема, конечно, наверное, где-то уже обучают, но далеко не везде. Еще сейчас, по ходу работы, сталкиваюсь c софтом который написан "на коленке", потом дописан еще кем-то, потом еще кем-то... и опа.. поддерживать нереально... при том софт разный и коммерческий, и для бюджетной сферы... во втором случае все гораздо хуже...

E> Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода.

Наверно в этом и вопрос — как перейти от разработки кода в 100 строк к коду 20к-30к строк.

E>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).

Думаю, было бы лучше дать возможность сделать проект на любом из изучаемых языков. А кто и что выберет, имхо, его право. Тем более какой-то язык может подойди лучше, банально из-за существующих сторонних библиотек и т.п.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Темные века программирования
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.10.06 07:42
Оценка: +1
Здравствуйте, Plague, Вы писали:

E>>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде.

P>Вот тут ты, имхо, точно подметил. Реально очень большая проблема, конечно, наверное, где-то уже обучают, но далеко не везде. Еще сейчас, по ходу работы, сталкиваюсь c софтом который написан "на коленке", потом дописан еще кем-то, потом еще кем-то... и опа.. поддерживать нереально... при том софт разный и коммерческий, и для бюджетной сферы... во втором случае все гораздо хуже...

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

E>> Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода.

P>Наверно в этом и вопрос — как перейти от разработки кода в 100 строк к коду 20к-30к строк.

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

E>>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).

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

Так и я о том -- нашел проект (тем более если это часть производственной практике) для которого требуется Немерле -- делай его на Немерле. Не должно быть догматических ограничений, вроде "в мире правят C++, Java и C#", поэтому на Немерле ничего нельзя делать на производственной практике, пока он в этот список не войдет.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Темные века программирования
От: Pavel Dvorkin Россия  
Дата: 06.10.06 08:59
Оценка:
Здравствуйте, 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 часа. Никаких серьезных программных продуктов за такое время не делают, а ведь большая часть спецкурса или вообще весь — это лекции.

Но, похоже, модератор выделит нас в отдельную ветку в "Образование и наука"
With best regards
Pavel Dvorkin
Re[5]: Темные века программирования
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.10.06 09:09
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>И что ? Я по первому языку фортранщик (был и Алгол, но недолго). И цикл с GOTO назад для меня был привычкой и нормой. Но не помню, чтобы я хоть раз впоследствии такое написал на Паскале или С. Это все очень быстро усваивается.


GOTO -- это цветочки по сравнению с выбором между использованием лямбды или объекта-функтора. Например, в Java я могу пользоваться только реализациями интерфейсов (адаптеры разные, листенеры), как в виде именнованых, так и в виде анонимных классов. Такой подход, к примеру, может один к одному использоваться в Ruby. Но может быть гораздо проще применять лямбды. Либо наоборот, лямбды настолько часто используются, что временами не замечается, когда было бы полезно перейти к объектам.

PD>Больной вопрос. В общем, согласен. Практически же это связано с таким количеством прочих факторов, что их обсуждение займет десятки страниц. Учебный график и его выполнение. Разный уровень студентов. Наличие серьезной задачи. Прочие дисциплины (от них же никто не освободит, а у студентов 30-35 часов в неделю, и только 4 из них — у меня). И т.д. И т.п.

PD>То, что ты хочешь — в теории верно и разумно, а на практике порой просто неосуществимо. То , что ты хочешь, можно бы реализовать в виде неких курсов, когда учащиеся готовы на это тратить по 8 часов в неделю на протяжении месяца и более. Увы, это очень далеко от вузовской реальности.

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

>>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).


PD>Роль спецкурса не в этом. Его назначение — ознакомить с тем, что есть, дать направление, а там уж пусть сами вникают в глубину, если им надо. Спецкурс полугодовой у нас — 36 часов, годовой — 72 часа. Никаких серьезных программных продуктов за такое время не делают, а ведь большая часть спецкурса или вообще весь — это лекции.


Я против того, чтобы на каком-то этапе запретить пользоваться языком только из-за того, что он не в мейнстриме.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Темные века программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.10.06 10:20
Оценка: 1 (1) +4
Здравствуйте, eao197, Вы писали:

E>Наивно, имхо, в вотчине VladD2 упоминать, что идеальный язык еще не изобретен.


Как же? А Руби?

ЗЫ

А вообще, что-то вы как-то распустлись. Ну, один-два раза пройтись по личностям ради смеха это еще ничего. Но всему должен быть предел.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.