"Never mind what's wrong with Ruby, what's wrong with you?"
Довольно крутая статья, спасибо!
Такое ощущение, что автор учился на серьезном гуманитарном факультете, самому так натаскаться нереально.
Такое ощущение, что автор учился на серьезном гуманитарном факультете, самому так натаскаться нереально.Да ладно, вполне реально. Обрати внимание, например, на посты топикстартера.
Собственно, единственный плюс Джав состоит в том, что на них научились писать большие проекты. Т.е. построили некую индустрию - конвейер.
И немного в продолжение.
Я знаю одного канадского товарища, который любит говорить примерно так:
"In Soviet Russia you don't write Ruby, Ruby writes you."
---
"А я обучался азбуке с вывесок,
листая страницы железа и жести."
здравый, на мой взгляд, скептик, с кофейным стягом не прыгает, думаю, если сможешь ясно сформулировать, что он (а за одно и я) не понимает, на письмо тебе ответит

К вопросу о правильно расставленном ударении.
---
...Я работаю антинаучным аферистом...
правда читал статью по диагонали
"Article requires far longer to read than the attention span"?
---
...Я работаю антинаучным аферистом...
Мужик прав. Среднему фанату Руби не одолеть статью, написанную в таком стиле.Имхо, достаточно было много читать, уделять достаточное внимание родному языку в школе и уметь получать удовольствие от процесса. Во многих школах было достаточно возможностей школьных заданий для неплохого "натаскивания". Другой вопрос в том, что эти задания основная масса выполняла весьма неохотно и "лишь бы оценку хорошую получить". В свою очередь, это уже сильно зависело от учителя. Главное, чтобы он не принимал шаблонные сочинения и частенько задавал оригинальные темы вместо избитых общих "трагедия маленького человека там-то", на которые многие "находчиво" отписывали такие же общие фразы, почерпнутые из учебника по литературе и со слов того же учителя.
Такое ощущение, что автор учился на серьезном гуманитарном факультете, самому так натаскаться нереально.
> весьма неохотно и "лишь бы оценку хорошую получить".
Я выполнял задания весьма неохотно, за что и получал отнюдь не
хорошие оценки. Это к тому, что школа нисколько не поощряет
самостоятельности мышления.
---
...Я работаю антинаучным аферистом...
В свою очередь, это уже сильно зависело от учителя. Главное, чтобы он не принимал шаблонные сочинения и частенько задавал оригинальные темы вместо избитых общих "трагедия маленького человека там-то", на которые многие "находчиво" отписывали такие же общие фразы, почерпнутые из учебника по литературе и со слов того же учителя.Интерес должен быть. Тупое или примитивное задание естественно не поощряет самомостоятельность решения. Лень и неохота вкупе с неинтересностью задачи - великое сочетание!
интерес к чему-то зависит не от оригинальности. Вспомни, чему
учат на уроках литературы в 8-9 классах, у нас 8-й класс начался
с "Библии", "Сказания о короле Артуре", миннезингеров и Мольера.
А о чём думают восьмиклассники? Что они читают самостоятельно?
Как итог, я помню только честно прочитанное "Сказание о Тристане
и Изольде" и к тому времени уже давно известное мне наизусть
"Прощание со Швабией". Как бы ни было оригинально предложение
читать стихи Ломоносова, это никак не подходит.
И, кстати, на учителя тоже нельзя свалить недостатки
преподавания. Потому что учитель не самостоятелен в принятии
решения, чему учить и как учить. Это встречается очень редко,
потому что связано с особым статусом школы. Навроде физмат
уклона. Там даже не важно, какой уклон, просто нужен хоть
какой-нибудь особый статус, позволяющий самостоятельно
разрабатывать программу. Потому что идиоты из министерства
научены только "держать и не пущать", им качество образования
побоку.
---
"А я обучался азбуке с вывесок,
листая страницы железа и жести".
Вспомни, чемуггг
учат на уроках литературы в 8-9 классах, у нас 8-й класс начался
с "Библии", "Сказания о короле Артуре", миннезингеров и Мольера.
то ли я в это время благополучно вместо этой муры (по крайней мере таковой она являлась для меня того времени) читал правильные книги Жюля Верна, Дюма, Лондона, Стивенсона и других, не слушая литераторшу, то ли нас таким вовсе не мучили.
Это мало зависит от оригинальности задаваемых тем, потому чтоЗдесь и далее представлено совершенно субъективное мнение человека, не имеющего отношения к педагогике.
интерес к чему-то зависит не от оригинальности. Вспомни, чему
учат на уроках литературы в 8-9 классах, у нас 8-й класс начался
с "Библии", "Сказания о короле Артуре", миннезингеров и Мольера.
А о чём думают восьмиклассники? Что они читают самостоятельно?
Как итог, я помню только честно прочитанное "Сказание о Тристане
и Изольде" и к тому времени уже давно известное мне наизусть
"Прощание со Швабией". Как бы ни было оригинально предложение
читать стихи Ломоносова, это никак не подходит.
Я о том, что задание шаблонных тем абсолютно бессмысленно.
1) Хороший учитель знает, что интересно "активным" ученикам и учитывает это в темах
2) Хороший учитель дает оригинальные темы для увеличения вероятности проявления интереса у учеников. Частенько я сам не подозревал насколько мне интересна тема, пока не углублялся в нее. Поэтому иногда постановка в безвыходную ситуацию (то есть необходимость самостоятельного написания) может дать результат.
3) Хороший учитель дает псевдо-"свободную" тему. Когда ученик может попытаться предложить свой вариант.
Зачастую на доске предложено до десяти тем. А не три-четыре.
Про план

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

Даже не смотря на то, что сам я никак не DL'щик.
Даже пхп толком не знаю =)
я тоже ничего не читал в школе, но уже во время учёбы в университете прочитал гораздо больше произведений Толстого и Достоевского, чем положено по школьной программе.
Ну что-то вроде того =)Поразительно. Даже неловко спрашивать, откуда уверенность в
Даже не смотря на то, что сам я никак не DL'щик.
+1
Об этом твердят уже сколько времени, а воз и ныне там.
Основная отмазка заключается в том, что есть какие-то
общепринятые положения приёма в институт, да и вообще
единый подход к оценке образования с аттестатом
государственного образца.
Получается, что если отменить обязательность прочтения
"Маленьких трагедий" Пушкина, то некоторые товарищи из
Министерства потеряют способность оценивать сочинения.
А Белинский еретик, "сильно ошибался в оценке" и т. д.,
и т. п. То, что самим этим "товарищам" до Белинского
столь же далеко, сколь и оцениваемому ими школьнику,
не фиолетово только школьнику и некоторым людям, не
имеющим в дипломе государственного образца отметки,
свидетельствующей о филологическом или педагогическом
образовании. И на мнения самих же филологов и преподавателей,
но не считающих полезным знакомить школьников с творчеством
Фёдора Михалыча, людям из Министерства тоже покласть.
А Чехов? Он тоже еретик. От туберкулёза умер --- бог покарал.
Но с другой стороны, есть куча шаблонных тем, которые школьникам
очень даже интересны. "В этой теме, и личной и мелкой," блин.
Но вот их-то и не дают. А потом приходится всяких идиотов из
петли вытаскивать и за шкирку ловить. Ты говоришь, что давать
шаблонные темы бессмысленно, а вон зайди в "Общество", там как
раз сидят люди, которым не хватило пинка, чтобы они разобрались,
что есть Родина. Или посмотри, как выкладывают фотографии безо
всяких объяснений, что к чему, и отнюдь не того качества, чтобы
было понятно, что хочет сказать фотограф. И т.д., и т.п. ---
можно до чёрта примеров набрать.
> Про план
Хороший у вас был план. То есть --- учитель, раз вы так свободно
проскакивали какие-то темы. Но вот беда: учитель тоже человек, и
если у него над душой стоит методист, требующий формального
отчёта по "пунктам", а у учителя своих забот хватает (он ведь не
всегда старый одинокий человек, у которого школа что дом родной
то и учитель может и оказывается пострадавшим от формализма.
Кроме того, есть ещё один загон: учитель может чётко осознавать,
что большинству учеников план нужен только затем, чтобы получить
аттестат и сдать в институт, и он чётко знает, что оценивать, как
в том, так и в другом случае, будут люди с определённым складом
мышления, то есть "тема не раскрыта", "держать и не пущать".
Отсюда следует вполне разумное желание _натаскать_. Просто,
используя административный ресурс, натаскать школьников писать
правильные слова по предлагаемым темам. "100 школьных сочинений."
То, что потом такие выдресированные школьники могут сорваться
и вместо института пойти служить в армию, наплевав на свои
задатки к чему-нибудь более полезному, тоже наплевать.
Жизнь жестока, и всё такое.
Зато у тех, кто переживёт, у них будет "всё хорошо".
Самое плохое --- то, что у этих переживших действительно "всё хорошо",
хотя, да, никаких пушкиных или, там, белинских не получается.
Зато всё хорошо.
---
"Тьфу! Опять стихи?
С меня довольно этой чепухи.
Пойду-ка в сад."
Хороший у вас был план. То есть --- учитель, раз вы так свободноДва разных учителя. Женщины с семьями и детьми
проскакивали какие-то темы.

В общем, не знаю, как там вся эта школьная бюрократия работает, но у нас был отличный директор (по словам родителей и учителей). Думаю, он всегда был на стороне учителей. Если от него что-то зависело.
Вообще, мне на школу грех жаловаться, одна из лучших в городе была, вроде.
Во-вторых, тут уже не раз поднимался вопрос, насколько же хорошо надо знать предмет, чтобы высказывать свое мнение о нем, и бы не хотел начинать новое обсуждение в этом ключе.
В-третьих, сам автор, по его собственным словам, явно не приверженец ДЛев, соответственно вряд ли большой знаток. И вот ты лично, как, с ним в хотя бы в чем-то согласен? Или все, что он написал - полный бред?
В общем, не понял я твоей иронии =)
> действительно читать все, что предлагается и в то время, когда
> предлагается, вызывает резкую ненависть к самому предмету.
На самом деле, всё же есть сомнения.
Очень может быть, что дело в подаче, а не в том, что подаётся.
То есть, если как-то объяснить, что происходит и в чём дело в
том же "Евгении Онегине", то может быть и можно добиться
какого-то понимания. Но если поступать так, как делают: тупо
заучивать "теперь-я-знаю-в-вашей-воле-меня-презреньем-наказать"
и добиваться какого-то ответа,--- что можно получить, если
у школьника и даже у учителя нет представления о свойствах
изображаемого мира? Существенных в данном случае свойствах?
Если я полгода спустя узнаю о том, что вся эта история чуть ли
не сравнима с шекспировскими трагедиями, но не от преподавателя,
а от совершенно постороннего знающего человека, то дело совсем
не в учебном плане и не в выборке произведений.
---
"...Чтобы наука действительно входила в плоть и кровь,
превращалась в составной элемент быта вполне и настоящим образом."
Имхо, достаточно было много читать, уделять достаточное внимание родному языку в школе и уметь получать удовольствие от процесса. Во многих школах было достаточно возможностей школьных заданий для неплохого "натаскивания". Другой вопрос в том, что эти задания основная масса выполняла весьма неохотно и "лишь бы оценку хорошую получить". В свою очередь, это уже сильно зависело от учителя. Главное, чтобы он не принимал шаблонные сочинения и частенько задавал оригинальные темы вместо избитых общих "трагедия маленького человека там-то", на которые многие "находчиво" отписывали такие же общие фразы, почерпнутые из учебника по литературе и со слов того же учителя.Причем тут оригинальные темы? Он использует много грамматических конструкций, слов и т.п. характерных для литературного английского, причем скорее английского чем американского. Т.е. не совсем современного. Может он, конечно, конкретно ботал в школе, но, скорее, просто или школа была продвинутой (как из фильма Dead poets society или в универе заставляли строчить большие трактаты. Крайне прикольно смотрится его писанина на фоне других программеров.
> бюрократия работает, но у нас был отличный
> директор (по словам родителей и учителей).
Вот что-что, а бюрократия работает хорошо. Как часы.
И не только в школе, а всегда и везде, где она есть.
Если директор сумел её побороть в твоём частном случае,
считай, тебе повезло. Не всем так везёт, далеко не всем.
Я переводился из одной школы в другую, так что у меня были
возможности (правда, весьма ограниченные) испытать на себе
последствия разного управления.
---
"Мы диалектику учили не по Гегелю.
Бряцанием боёв она врывалась в стих..."
здравый, на мой взгляд, скептик, с кофейным стягом не прыгает, думаю, если сможешь ясно сформулировать, что он (а за одно и я) не понимает, на письмо тебе ответитПозже отвечу.
А так, сразу можно указать на изъян в его рассуждениях. Он привязался к паре высказываний, где была высказана мысль о преимуществе DL в черезчур обобщенной форме. Не вижу тут предмета для опровержений вообще. Абсолютно все, говоря о чем-то, позволяют себе опускать частности. Это не матанализ, если начать перечислять все ограничения, то можно до утра не закончить.
Потом он выделил 3 якобы ключевых особенности DL, которые позволяют сокращать код - Weak Typing, Code Modification & some other shit. Успешно опровергнув 2 пункта, он заявил, что, мол, этим доказано, что DL не могут быть короче. Ну что за бред, ей богу. Вот прямо сейчас у меня есть пример на интерпретируемом динамически типизированном языке, который раз в 50 короче аналогично программы на С++, при этом он еще и работать будет быстрее. Если автор не способен понять, что кроме WT и CM есть еще значительный выигрыш за счет упрощения описания логики программы, который достигается высокой специализацией языка программирования, то это его личные проблемы. Значит в его лице мы наблюдаем типичный пример Блаб программиста (как определено by Paul Graham диагноз подтверждается типичными высказываниями в стиле - я не знаю/не пробовал/децел посмотрел, но уверен/жопой чувствую.
Во-первых, это не уверенность, а мое мнение.Ладно, я не наезжал. Просто смотрелось как "не знаю, но одобряю"
Во-вторых, тут уже не раз поднимался вопрос, насколько же хорошо надо знать предмет, чтобы высказывать свое мнение о нем, и бы не хотел начинать новое обсуждение в этом ключе.
В-третьих, сам автор, по его собственным словам, явно не приверженец ДЛев, соответственно вряд ли большой знаток. И вот ты лично, как, с ним в хотя бы в чем-то согласен? Или все, что он написал - полный бред?

Лично я, к сожалению, очень слабо знаю джаву (поэтому мое мнение базируется еще и на высказываниях знакомых, которым я доверяю). Но знаю плюсы, питон и джаваскрипт на нормальном уровне. Так вот, по опыту скорость разработки, сложность поддержки и компактность кода (назовем это вместе удобством написания кода) без потери читабельности (спорный вопрос, конечно, что же это такое) в порядке возрастания: плюсы->джава->питон. Причем различие между крайними звеньями иногда на порядок. В целом, автор неправ в том, что он рассуждает "как бы обо всех языках сразу". Но ставить в одну группу джаваскрипт и питон (или например джаву и плюсы) крайне забавно. Отсюда и проистекают выводы по пунктам, похоже. Автор взял, к примеру, джаваскрипт и сделал вывод, что синтаксический сахар (хотя какой там в джаваскрипт синтаксический сахар, блин) вкупе с динамической типизацией в семействе ДЛ не дает резко сократить код без потери читабельности. Вообще, он же сам заявляет, что у него нет доказательств, как прямого так и обратного факта. А так - есть общие рассуждения. Я же рассуждаю с точки зрения опыта работы на данных языках. И он мне говорит, что единственное рациональное звено в статье - "фанаты преувеличивают и закрывают глаза на недостатки". Но это извечная истина. На то они и фанаты.
ЗЫ Про коммьюнити вообще лежал. Даже на LOR есть с пяток помогающих и знающих питон людей. Уж на что флудерский ресурс, а вот.
> грамматических конструкций, слов и т.п.
> характерных для литературного английского, причем
> скорее английского чем американского. Т.е. не
> совсем современного. Может он, конечно, конкретно
> ботал в школе, но, скорее, просто или школа была
> продвинутой (как из фильма Dead poets society или в
> универе заставляли строчить большие трактаты.
Называть английский английский менее современным, чем
американский английский, это сильно.
> Крайне прикольно смотрится его писанина на фоне
> других программеров.
Ты Джефа Фокса не читал, он, по его словам, в школе в каком-то
нехилом литературном конкурсе выиграл. Правда, он не совсем
программист, а больше инженер, занимался проектированием
процессоров для встраиваемых систем, собственно встраиваемыми
системами и чем-то, похожим на нынешние смартфоны.
Кроме того, неизвестно, часто ли ты наблюдал, как те же
штатовские, канадские и британские программисты ругаются
по каким-нибудь "отвлечённым" поводам? Например, по поводу
введения войск в Ирак или принятия каких-нибудь законов.
---
"Narrowness of experience leads to narrowness of imagination."
Причем тут оригинальные темыПритом, что почитай, если есть желание, наш диалог с контрой. Смысл в том, чтобы школьник писал сам, а не отписывался шаблонными фразами на шаблонные темы, потому что ему тема неинтересна и вообще проще списать, так как есть откуда.
Ко всему остальному: именно об этом я и говорил. Большинство конструкций ты автоматом узнаешь, если много читаешь классику, к примеру. А без лени и от себя написанные сочинения даже в школе вполне могут тебя научить их употреблять на хорошем уровне. Причем, практически тоже автоматом.
> которые позволяют сокращать код - Weak Typing, Code
> Modification & some other shit. Успешно опровергнув 2 пункта,
> он заявил, что, мол, этим доказано, что DL не могут быть
> короче. Ну что за бред, ей богу. Вот прямо сейчас у меня есть
> пример на интерпретируемом динамически типизированном языке,
> который раз в 50 короче аналогично программы на С++, при этом
> он еще и работать будет быстрее. Если автор не способен
> понять, что кроме WT и CM есть еще значительный выигрыш за
> счет упрощения описания логики программы, который достигается
> высокой специализацией языка программирования, то это его
> личные проблемы. Значит в его лице мы наблюдаем типичный
> пример Блаб программиста (как определено by Paul Graham
> диагноз подтверждается типичными высказываниями в стиле - я не
> знаю/не пробовал/ децел посмотрел, но уверен/жопой чувствую.
Ты упускаешь одно очень важное свойство: рассматриваются языки
не регулярного строения и не специализированные, а простые языки
классической парадигмы с кучей решений "к случаю". Это тебе не
какая-нибудь схема или другой лисп. Хотя критика, да, не всегда
по делу и вызывает нарекания.
---
...Я работаю антинаучным аферистом...
Допускаю, что автор где-то давал спорные утверждения (удивительно, если бы это было не так в таком достаточно тонком вопросе).
Просто это одна из точек зрения, в которой, на мой взгляд, достаточно четко показывается, что все преимущества ДЛей как минимум спорны.
Причем автор старается быть объективным, и нигде не кричит, что вот мол кофе - это круто.
ЗЫ А питон я вообще считаю некоторым исключением из семейства ДЛей. В Питоновском сообществе резко публика отличается в лучшую сторону.
IMHO, старичка Брукса еще никто не опровергнул.
Просто это одна из точек зрения, в которой, на мой взгляд, достаточно четко показывается, что все преимущества ДЛей как минимум спорны.Проблема в том, что я вполне себе осознаю недостатки того же питона, но при этом не считаю, что его преимущества перед плюсами и джавой так уж спорны.
Имхо, удобство написания кода в том же питоне получается именно за счет простоты базового синтаксиса, динамичности и всяких "вкусностей" гибридного подхода, типа map, reduce, ..., lambda, list comprehensions и проч.
Может еще что вспомню. Я как-то не занимался анализом из-за чего мне так удобно писать и поддерживать код

Что он сам говорил "десять лет спустя"?
---
...Я работаю антинаучным аферистом...
А ты самого Брукса читал?Естественно. Ты про послесловие к книжке, которое он потом дописал?
Что он сам говорил "десять лет спустя"?
---
...Я работаю антинаучным аферистом...
Nevertheless. Прочитал. Аффтар не жжот совершенно. Если воспринимать статью чисто как обоснование тезиса "полезность DL сильно преувеличена, безумные фанаты DL — безумны", то она правильная, правда, совершенно непонятно, зачем было писать столько много слов?
Чтобы узнать, как выглядит настоящее жжение сердцов глаголом, почитайтека лучше Стиви, вот например:
The Perl folks have this Perl Haiku competition each year. It's a nifty idea, and it's pretty amazing that you can write useful seventeen-syllable programs.И тема, кстати, похожая, наезд на фанатов Xtreme/Agile Programming. Грамотный. Основная часть наезда в предыдущем посте, кстати.
I tried it with Java once, and produced a valid Java haiku:
ArrayList<int> myListOfInt = new ArrayList<int>
which, spoken aloud, reads:
ArrayList of Int
my list of int, equals new
ArrayList of Int
Maybe it's just me, but I find it pretty farging depressing that a simple declaration like that can be haiku-sized in Java.
Возвращаясь к обсуждаемому автору: ну да, мы не знаем, действительно ли weak typing позволяет сэкономить время и силы, особенно с учётом интеллисенса, равно как и ограниченной емуляции weak typing через type inference, как это сделано в третьем шарпе (на уровне классов — всё статично, внутри методов работает тайп инференс, анонимные классы, делегаты, автоматические структуры етс, и это очень правильное разделение, ИМХО). И? Ну да, не пятикратное уменьшение объёма кода, но ведь какое-то очень даже может быть? Шарподизайнеры, наверное, не от балды решили включить все эти изменения в сторону DL?
Аргумент про интуитивность языка он просто не понял, по-моему. Приведу простой пример:
tell application "System Events"
if (name of the first process whose frontmost is true) is not "Mail" then return
end tell
tell application "Mail"
try
set foo to first mailbox of (first account where it is account of (first mailbox whose unread count > 0 whose unread count > 0
set bar to messages of foo whose read status is false
tell message viewer 1 to set selected mailboxes to {foo}
tell message viewer 1 to set selected messages to {last message of (messages of foo whose read status is false)}
on error
beep
end try
end tell
Это эпплскрипт. Очень поучительно его парсить глазами, представляя себе аналогичные стейтменты в Своём Любимом Языке. Особенно поучительно парсить строчку "set bar to messages of foo whose read status is false". В Моём Любимом Языке первый вариант, приходящий в голову, это ебанутый совершенно foreach (а у насильников — так вообще for). Он длиннее и перегружен не имеющей отношения к делу семантикой (объявление переменной цикла, сам цикл етс хотя казалось бы, ведь исходник на "естественном языке", который вроде бы не очень подходит для программирования.
А это как раз и есть та вешь, которую аффтар просто не видит: неправильный язык накладывает искуственные ограничения на мышление. Корректная мысль на естественном языке преобразуется во что-то совершенно непотребное — ещё до того, как программист её подумал. Это плохо.
Следующий вариант, кстати, это "bar = foo.messages.SelectByPredicate(delegate (Message msg) { return !msg.readStatus;} )", но и в нём есть довольно много лишнего, потому что в Моём Любимом Языке нет паскалевского using (введение в текущий lexical scope полей/методов указанного объекта тем более такого автоматического. Хотя фиг знает, там что-то с sql-синтаксисом похожее было. Я это к тому, что у Моего Любимого Языка есть шансы стать полезным и удобным, он уже таким становится потихоньку, надо только более активно изживать старые заморочки и проникаться новым стилем.
В техническом смысле, да.
> равно как и ограниченной емуляции weak typing через type inference
Тема выведения типов вообще не раскрыта: автор рассматривает
исключительно алголоиды, поэтому у него либо есть объявления,
либо их нет, другие подходы не рассматриваются вовсе.
> В Моём Любимом Языке
А что сокращать не начал?
(Тут было что-то страшное, напоминающее LOOP из Common Lisp HyperSpec.)
> А это как раз и есть та вешь, которую аффтар просто не видит:
> неправильный язык накладывает искуственные ограничения на
> мышление. Корректная мысль на естественном языке преобразуется
> во что-то совершенно непотребное — ещё до того, как
> программист её подумал. Это плохо.
Спорное утверждение.
Естественный язык и модельный язык (язык программирования, в частности)
описывают разные миры, вообще говоря, с очень разными свойствами.
Поэтому они имеют полное право различаться, и даже сильно различаться.
Разница между обыденным представлением о предметах и научным,
даже механическим, приводит к тому, что в науке (например, механике)
используется язык, непонятный неподготовленному человеку.
А язык отличается потому, что он удобнее, лучше описывает модельную
область, где обывательские представления либо отсутствуют, либо
неполны или ошибочны.
---
...Я работаю антинаучным аферистом...
Да, именно про него.Эта добавка ничего не опровергает.
Только набрал попкорна и собрался почитать - а статья-то того. Автор осознал свою неправоту?
Ну что за бред, ей богу. Вот прямо сейчас у меня есть пример на интерпретируемом динамически типизированном языке, который раз в 50 короче аналогично программы на С++, при этом он еще и работать будет быстрее. Если автор не способен понять, что кроме WT и CM есть еще значительный выигрыш за счет упрощения описания логики программы, который достигается высокой специализацией языка программирования, то это его личные проблемы.Упрощение описания логики никогда не было целью.
Основная цель - сопровождаемость. И здесь у ДЯ есть ряд серьезных проблем... Видел когда-нибудь пакет из сотни bash-скриптов?
Основная цель - сопровождаемость. И здесь у ДЯ есть ряд серьезных проблем... Видел когда-нибудь пакет из сотни bash-скриптов?Ну я лично поддерживал систему в сотню скриптов на питоне и при этом правил баги в использованном как thirdparty ПО, что вместе даст твои "сотни" скриптов. Опиши, в чем проблема? Или признай, что рассуждать о семействе ДЛ в общем - бессмысленно.
Или признай, что рассуждать о семействе ДЛ в общем - бессмысленно.Вообще рассуждать о преимуществах того или иного языка - бессмысленно.
В частности, успех всех этих питонов в большой мере обусловлен
наличием готовых библиотек, написанных на сях или даже фортране.
См. того же Брукса, где он говорит про повторное использование
и коробочное обеспечение. И хотя многоязыковые средства
существовали и ранее, языки были совсем другие, у них, за
исключением лиспов не было и десятой части тех наработок,
которые притаскивают сейчас в питоны и т. п. Так что время
для решения больших задач, про которые говорит Брукс, можно
сокращать ещё больше.
Далее. Если посмотреть на сегодня, то стали появляться новые
способы управления: сильно сократилось время ожидания ответа
от конечного пользователя, само получение ответа стало более
простым, а значит и более вероятным. Это тоже играет _против_
Брукса. В каком, там, году вышло его "двадцать лет спустя"?
В 95-м? Ну, или около того. Это как раз то время, когда только
что появились проекты свободных BSD. Тем разработчикам пришлось
решать задачи управленцев, навроде Брукса, _при_полном_, почти
что, _отсутствии_ материального давления, применять совсем
другие подходы к управлению кадрами.
Итого, в самом начале 90-х утверждения Брукса серьёзно
поколебались, потому что кроме ГНУ появились ещё два серьёзных
проекта, использующие (пусть даже в силу необходимости)
совершенно иные подходы к управлению ходом разработки.
Что-то ещё там было.
В том же "двадцать лет спустя", наверное, Брукс отказался
от одностороннего подхода "проектирование - реализация".
Сейчас это уже в порядке вещей и даже продолжают попытки
сокращения цикла разработки.
Т.н. "time-to-market" становится основным показателем,
как и положение Столмена или Реймонда "Release early".
Так что книга Брукса начинает понемногу "устаревать":
появляются границы, в которых положения истинны и за
которыми появляются сомнения.
---
...Я работаю антинаучным аферистом...
bash, как и sh, не предназначен для того, чтобы на нём
программировали большие задачи. Ты выбрал заведомо слабого
представителя и теперь говоришь, что вот, мол, посмотрите.
Ну что можно сказать? Молодец. Хвалю.
Если ты смотришь только на те языки, которые отличаются только
внешними сторонами, почти исключительно синтаксисом, то это твои
личные трудности. Существуют языки, которые создавались именно
что с целью упрощения описания логики.
И про поддержку не надо, ты подсчитай действия и учти, что в sh
смысловая нагрузка на строку кода может быть существенно, чем в
явах и сях.
---
...Я работаю антинаучным аферистом...
---
"...Здоровые, румяные, бегают --- ничто их не колышет."
Хорошо, сформулирую точнее.
У языков есть предметные области, можно взять какую-нибудь задачу из предметной области двух языков и сравнить её реализацию. Можно взять набор таких задач. Так вот, если мы возьмём задачу, сформулированную на эпплскрипте так:
"set bar to messages of foo whose read status is false"
и посмотрим на её наивную реализацию в С#, например
ArrayList bar = new ArrayList;
for (int i = 0; i < foo.Messages.Count; i++)
{
Message msg = foo.Messages[i];
if (!msg.ReadStatus)
{
bar.Add(msg);
}
}
то увидим, что она не только значительно длиннее по количеству символов, но ещё и содержит дополнительную семантику, которая вообще-то нафиг не нужна. Цикл, переменная цикла, процесс добавления message в контейнер. Ничего этого нет в словах "set bar to messages of foo whose read status is false", в них не указывается, каким именно образом будет получен необходимый результат.
Особенно интересно то, что среднестатистическому C# программеру, перешедшему на него с С/С++, именно этот, неправильный вариант первым придёт в голову, и он наверняка им и удовлетворится. Парадигма такая потому что. И только если ему показать строчку на эпплскрипте, он заметит, что у него в коде есть куча лишнего, и начнёт его потихоньку улучшать: вначале заменит for на foreach, затем, если он успел перейти на второй шарп, избавится от цикла и присваиваний вообще, заменив их на messages.FindAll(delegate(Message msg) { return !msg.ReadStatus; } получив в результате семантически точное отображение исходного кода, разве что с небольшим количеством синтаксического мусора.
Почему так? Потому что ранний шарп жил в сишной, процедурной парадигме и только сравнительно недавно в нём начали появляться средства для чего-то вроде функциональной парадигмы — причём, замечу, это средства не столько самого языка, сколько стандартных библиотек. Если человек видит у List<T> метод FindAll(Predicate<T> predicate то он может задуматься о том, для чего это нужно, и выйти на новый уровень чистоты кода. А если нет, то ему придётся узнавать об этом откуда-то ещё, после чего реализовывать всё необходимое самостоятельно.
Таким образом я, надеюсь, показал, что язык (синтаксис + стандартные библиотеки) всё-таки накладывает определённый отпечаток на способ программировательного мышления, причём даже в рамках одного языка это может приводить к существенно разной эффективности программирования (как её ни меряй). И именно это может приводить к повышенной эффективности конкретно Руби (не знаю как на самом деле, не пробовал динамичность же системы типов является довольно ортогональной по отношению к этому эффекту, хотя и может быть в некотором смысле необходимым требованием. Например, для эффективного использования предикатов нужна поддержка first-class functions (а то и closures причём синтаксически простая. В шарпе это довольно хорошо эмулируется на уровне методов, анонимный делегат имеет прозрачный доступ к контексту того места, где он был объявлен. А на уровне классов это вроде и не нужно.
А рассуждение аффтара, как я его понял: "предположим, что Руби более эффективный, Руби - DL, рассмотрим свойства DL-языков вообще, ни одно из них не даёт повышенной эффективности само по себе, следовательно мы пришли к противоречию с предположением" содержит грубую логическую ошибку, не правда ли?
совершенно иные подходы к управлению ходом разработки.Не понял, какое отношение процесс разработки имеет к борьбе со сложностью? В чем подрыв основания? В использовании библиотек?
Это вообще смешно.Я выбрал того представителя, с которым сейчас работаю. Набор из сотни PL/SQL процедур и sh-скриптов. Финансовая система, между прочим.
bash, как и sh, не предназначен для того, чтобы на нём
программировали большие задачи. Ты выбрал заведомо слабого
представителя и теперь говоришь, что вот, мол, посмотрите.
Ну что можно сказать? Молодец. Хвалю.
Кстати, а какой скриптовый язык предназначен для программирования больших задач?
F> А это как раз и есть та вешь, которую аффтар просто не видит:
F> неправильный язык накладывает искуственные ограничения на
F> мышление. Корректная мысль на естественном языке преобразуется
F> во что-то совершенно непотребное — ещё до того, как
F> программист её подумал. Это плохо.
K> Спорное утверждение.
F> Таким образом я, надеюсь, показал, что язык
F> (синтаксис + стандартные библиотеки) всё-таки
F> накладывает определённый отпечаток на способ
F> программировательного мышления
Тезис Сапира---Ворфа, только применённый к программированию.
Я говорил немного не о том.
Дело в том, что это тесно связано с документированием кода.
Если ты переводишь приказы естественного языка на модельный
и делаешь это слишком часто, то легко забыть, что вот это вот
на самом деле означает "пометить непрочитанные сообщения
крестиком". И тут возникает вопрос, на каком языке думает
_сам_ программист: на естественном или на модельном.
Вот этот последний вопрос влечён спорность твоего заявления.
А связь с документированием здесь такая: поскольку разные люди
имют отличающимся, вообще говоря, привычки мышления, код
приходится описывать на естественном языке. Но тогда так или
иначе программист должен либо подумать дважды, на естественном
языке и на модельном, либо подумать на естественном языке и
перевести свои мысли на модельный.
Я вижу пока два оправдания твоему заявлению: одно связано с
плохой привычкой документировать код только после написания,
другое --- вовсе не документировать.
F> А рассуждение аффтара, как я его понял:
F> "предположим, что Руби более эффективный, Руби - DL,
F> рассмотрим свойства DL-языков вообще, ни одно из них
F> не даёт повышенной эффективности само по себе,
F> следовательно мы пришли к противоречию с
F> предположением" содержит грубую логическую
F> ошибку, не правда ли?
С этим я и не спорил.
---
"Утверждаю, что с научной точки зрения, главное в профессии вора,
как и в профессии святого, конечно, это вовремя скрыться."
> Не понял, какое отношение процесс разработки имеет
> к борьбе со сложностью? В чем подрыв основания?
Ты точно читал Брукса? И понял его?
Он утверждал, что прирост производительности за счёт улучшения
технических средств уже почти что невозможен, да и вообще
слишком мал, и всё дело теперь упирается в организационные
вопросы, а их с того времени научились решать и другими способами,
не только теми, которые были известны Бруксу.
> В использовании библиотек?
Это даже сам Брукс признал большим сдвигом в промышленности.
---
...Я работаю антинаучным аферистом...
> Набор из сотни PL/SQL процедур и sh-скриптов.
> Финансовая система, между прочим.
Значит, тебе просто не повезло.
А ты пробовал задать вопрос, почему используется bash,
а не что-нибудь более удобное?
> Кстати, а какой скриптовый язык предназначен для
> программирования больших задач?
Никакой.
Я слышал только про два более или менее успешных примера:
PERL и TCL.
---
...Я работаю антинаучным аферистом...
Если ты переводишь приказы естественного языка на модельный
и делаешь это слишком часто, то легко забыть, что вот это вот
на самом деле означает "пометить непрочитанные сообщения
крестиком". И тут возникает вопрос, на каком языке думает
_сам_ программист: на естественном или на модельном.
Вот этот последний вопрос влечён спорность твоего заявления.
---
Стоп-стоп-стоп. Я не пытаюсь сравнивать естественный язык и модельный, я сравниваю разные модельные (конкретно AppleScript и первый C#). Просто так получилось, что один из этих двух модельных в точности совпадает с естественным, на данной задаче. Более того, я и от логичного вопроса "а как именно формулируется данная задача?" могу уйти самым остроумным образом: а неважно, на самом деле, можно ведь взять эти две реализации и сравнить их на всевозможных входных параметрах, если результаты одинаковы, то эти реализации являются различными формулировками одной и той же задачи. Но поскольку одна из них существенно короче, можно предположить, что вторая является плохой формулировкой, содержащей что-то лишнее, и даже выделить это лишнее. Подчеркну, что она является плохой не сама по себе, а по сравнению с другой формулировкой, причём в данном случае это сравнение корректно, поскольку другая формулировка тоже записана на языке программирования.
Взаимосвязь с документированием кода очень неочевидна, поскольку опять же привязывается к естественному языку (а я не хочу сравнивать формулировки "пометить непрочитанные сообщения
крестиком" и "пройтись по всем сообщениям, выбрать непрочитанные, каждое непрочитанное пометить крестиком" в других случаях формулировка на языке программирования будет уделывать в ноль формулировку на естественном (как в J) или давать разнообразные инсайты на тему того, как следует правильно формулировать задачу на естественном, да и в конце концов на самом-то деле и документация, и код проистекают не только и не столько друг из друга, сколько из какого-то внутреннего представления программиста о том, что нужно сделать, оформленном на языке его мозга, если можно так сказать. Которое в процессе написания документации или кода изменяется, естественно.
Тем не менее, очевидно, что хорошие программисты в той или иной мере думают непосредственно на своём языке программирования, точнее на частоиспользуемой его части, что мы и можем наблюдать в данном случае, ведь на самом-то деле C# допускает и хорошую формулировку тоже, но в первую очередь появляется плохая. И, повторюсь, документирование кода отнюдь не всегда является панацеей, и даже больше: хороший код на хорошем языке в документировании не нуждается, поскольку оказывается выразительней естественного языка, перевод туда-обратно будет пустой тратой времени.
Да, это похоже на тезис Сапира-Ворфа, только относится к нему так же, как сложность алгоритмов относится к вычислимости.
K> Если ты переводишь приказы естественного языка на модельный
K> и делаешь это слишком часто, то легко забыть, что вот это вот
K> на самом деле означает "пометить непрочитанные сообщения
K> крестиком". И тут возникает вопрос, на каком языке думает
K> _сам_ программист: на естественном или на модельном.
K> Вот этот последний вопрос влечён спорность твоего заявления.
F> Стоп-стоп-стоп. Я не пытаюсь сравнивать естественный язык и
F> модельный, я сравниваю разные модельные (конкретно AppleScript и
F> первый C#). Просто так получилось, что один из этих двух
F> модельных в точности совпадает с естественным, на данной задаче.
F> Но поскольку одна из них существенно короче, можно
F> предположить, что вторая является плохой формулировкой,
F> содержащей что-то лишнее, и даже выделить это лишнее. Подчеркну,
F> что она является плохой не сама по себе, а по сравнению с другой
F> формулировкой, причём в данном случае это сравнение корректно,
F> поскольку другая формулировка тоже записана на языке
F> программирования.
Здесь тоже есть интересные последствия.
Но если мы считаем основным "западный" (Беркли, "Worse is Better")
подход к программированию, то всё в порядке.
F> Взаимосвязь с документированием кода очень неочевидна,
F> поскольку опять же привязывается к естественному языку
Разумеется, потому что документация пишется не для себя, а для
другого программиста или для непрограммиста, но специалиста в
предметной области.
F> Тем не менее, очевидно, что хорошие программисты в той или иной
F> мере думают непосредственно на своём языке программирования,
F> точнее на частоиспользуемой его части, что мы и можем наблюдать
F> в данном случае, ведь на самом-то деле C# допускает и хорошую
F> формулировку тоже, но в первую очередь появляется плохая.
F> И, повторюсь, документирование кода отнюдь не всегда является
F> панацеей, и даже больше: хороший код на хорошем языке в
F> документировании не нуждается, поскольку оказывается
F> выразительней естественного языка, перевод туда-обратно будет
F> пустой тратой времени.
Выразительность относительна.
Документация пишется ведь не для себя (не только для себя
а, часто, для программиста, использующего совсем другой язык
(который "+библиотеки"). Так что естественный язык необходим,
поскольку он является единственной точкой соприкосновения разных
специалистов. Разумеется, можно построить какой-то мир, где все
будут писать на плюсах, яве или чём угодно ещё, только там тоже
возникает расслоение языка, оно наступает сразу же, как только
ты отделяешь взаимодействие с пользователем от взаимодействия с
"железом".
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Ivan8209
"At eight thousand words, this article requires far longer to readthan the attention span of the average dynamic language weenie."
http://www.hacknot.info/hacknot/action/showEntry?eid=93
---
...Я работаю антинаучным аферистом...