LINUX.ORG.RU

Фраза Пола Грэма


1

0

Увидел очень глубокую и правильную мысль на его сайте, не мог удержаться и запостил:

The great languages have been the ones that good programmers designed for their own use-- C, Smalltalk, Lisp. The languages that were consciously designed for "average" programmers (Cobol, Pascal, Ada) have tended to be evolutionary dead ends.

http://www.paulgraham.com/design.html

ЗЫ: К Cobol, Pascal, Ada нужно добавить Java и C#.

★★
Ответ на: комментарий от Alviss

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

mv ★★★★★
()
Ответ на: комментарий от anonymous

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

>Кто не рискует, тот не пьет шампанское или иначе говоря, чем менее квалифицированные разработчики тем предсказуемее результат их работы. В пределе абсолютно предсказуема имитация бурной деятельности и распил бабла чему примеров навалом.

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

Alviss
()
Ответ на: комментарий от mv

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

Чтобы научиться распознавать типичные ситуации нужно много писать кода, это как раз то умение, которое не появляется без обширной практики. А паттерны будут похожи только в близких языках - в C++ и Java например, в C и Pascal, а вот C и Haskel не будут иметь всмысле паттернов ничего общего.

Alviss
()
Ответ на: комментарий от Alviss

> В таком случае получается, что все зависит от наемного работника - программиста (которому наплевать на результат),

Ну вы же сами говорили про стадию проектирования? Ну уйдёт один _программист_, возьмут другого, который прочитает документацию и будет писать дальше.

mv ★★★★★
()
Ответ на: комментарий от Alviss

> а вот C и Haskel не будут иметь всмысле паттернов ничего общего.

В чём разница между паттерном Singleton в Си и в Хаскеле?

mv ★★★★★
()
Ответ на: комментарий от Alviss

> Все эти алгоритмы, понимания языка и пр. - типичный интеллигентский BS.

Слова пролетария от клавиатуры.

> Либо вы знаете язык, его возможности и реализации типичных патернов на нем и можете писать production-quality код, либо вы только изучаете язык и качественный код пока писать не можете.

А потом интеллигенты плюясь и морщась переписывают код уменьшая сложность с O(2^n) до O(n), чтобы продуктом можно было в реальных условиях пользоваться.

> Тот, кто утверждает что конкретные языки изучать не надо - плавает в высших абстракциях, и давно оторвался от реальной жизни.

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

> Писать работающие и активно поддерживаемые программные системы совсем не то, что написать пару Hello World на новом языке.

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

anonymous
()
Ответ на: комментарий от mv

>> а вот C и Haskel не будут иметь всмысле паттернов ничего общего.

> В чём разница между паттерном Singleton в Си и в Хаскеле?

А давай ты приведешь менее тривиальный пример? 8) Вот меня бы устроил Visitor - какая разница между вариантами Java/Си++ и Хаскела?

tailgunner ★★★★★
()
Ответ на: комментарий от mv

>> В таком случае получается, что все зависит от наемного работника - программиста (которому наплевать на результат),

>Ну вы же сами говорили про стадию проектирования? Ну уйдёт один _программист_, возьмут другого, который прочитает документацию и будет писать дальше.

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

Alviss
()
Ответ на: комментарий от Alviss

> В таком случае получается, что все зависит от наемного работника - программиста (которому наплевать на результат), а рискует деньгами бизнессмен.

Бизнесмен, по определению, рискует деньгами. Всегда рискует.

ХОРОШИЙ программист всегда очень редкий и ценный кадр и от языка редкость не зависит, его всегда можно быстро освоить хотя бы до степени, достаточной чтобы сопровождать проект.

anonymous
()
Ответ на: комментарий от Alviss

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

Это надо уметь так презирать гениев. Вы точно пролетарий от клавиатуры. Только вот загвоздка, без гениев весь бизнес и общество превращается в огромное унылое говно, что и видно.

Еще ни одна фирма не разорилась из-за гения и полно разорившихся из-за "правильных" менеджеров и унылого дерьма вместо продукции.

anonymous
()
Ответ на: комментарий от mv

> В чём разница между паттерном Singleton в Си и в Хаскеле?

В Си синглетоны?

В Хаскеле синглетоны?

Господа вам на упячку с такими обсуждениями.

На отличненько.

anonymous
()
Ответ на: комментарий от anonymous

> + "задрот", реально освоивший парадигмы, используемые лиспом и хаскелем совсем по-другому с большей эффективностью станет программировать и на C++

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

Ну и срубит бабки конечно к своему удовольствию.

anonymous
()
Ответ на: комментарий от Alviss

> Так и будет, если это был нормальный процесс разработки и пришел нормальный, без всяких кавычек профессионал,

Нормальный профессионал с работы с нормальным процессом разработки не уйдёт. А если уйдёт, то в контору, не имеющую стадию проектирования, ни за что не пойдёт. Ну или пойдёт (в начальники), но с целью ввести эту стадию.

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

Как можно назвать трудоголиком человека, который не любит _кодировать_? Лаконичнее и короче Лиспа мало языков есть, и уж точно это не мейнстримовые C++/Java/C#

mv ★★★★★
()
Ответ на: комментарий от anonymous

Если ты о гениях вообще, то ты фигово знаешь историю чел.

anonymous
()
Ответ на: комментарий от tailgunner

> Вот меня бы устроил Visitor - какая разница между вариантами Java/Си++ и Хаскела?

Это вопрос мне или Alviss'у? Кстати говоря, если память не изменяет, то Гамма в своей книжке примеры паттернов приводит на плюсах и смоллтолке.

mv ★★★★★
()
Ответ на: комментарий от anonymous

> В Си синглетоны? В Хаскеле синглетоны?

А что вас, собственно, смущает? Отсутствие ООП-sugar и понятия "объект класса" в plain C?

mv ★★★★★
()
Ответ на: комментарий от mv

>> Вот меня бы устроил Visitor - какая разница между вариантами Java/Си++ и Хаскела?

> Это вопрос мне или Alviss'у?

Тебе, раз уж ты назвал Singleton ;)

> Гамма в своей книжке примеры паттернов приводит на плюсах и смоллтолке

Меня интересует, как это делается в функциональном стиле.

Вообще, есть где-нибудь "официальный перевод" паттернов GoF на функциональный язык? Или функциональщики выше такий житейских мелочей, как паттерны? 8)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Тебе, раз уж ты назвал Singleton ;)

Я хаскелль (и яву тоже) не знаю :) Разницы между реализацией visitor'а в C++ и CLOS не вижу. CLOS плюсатому программисту вообще родным покажется, только лучше :)

> Меня интересует, как это делается в функциональном стиле. Вообще, есть где-нибудь "официальный перевод" паттернов GoF на функциональный язык? Или функциональщики выше такий житейских мелочей, как паттерны? 8)

Что они, не люди? "Официального перевода" не встречал (не искал)

mv ★★★★★
()
Ответ на: комментарий от mv

> Разницы между реализацией visitor'а в C++ и CLOS не вижу.

Ну кроме того, что, благодаря MOP, объект может даже не знать про визитора :)

mv ★★★★★
()
Ответ на: комментарий от mv

>Как можно назвать трудоголиком человека, который не любит _кодировать_? Лаконичнее и короче Лиспа мало языков есть, и уж точно это не мейнстримовые C++/Java/C#

Если он слишком любит витать в абстракциях, чтобы заниматься таким 'низким" трудом как кодирование, он может заниматься архитектурой или разработкой требований. В развитом процессе разработки нет противоречия между кодированием и разработкой в целом.

Alviss
()
Ответ на: комментарий от Alviss

> В развитом процессе разработки нет противоречия между кодированием и разработкой в целом.

В развитом коммунизме нет противоречия между социализмом и коммунизмом в целом. Какую мысль до публики хотели донести?

mv ★★★★★
()
Ответ на: комментарий от imp

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

>Нет, это работодатель так _думает_, что ему это выгоднее, в реальности вероятность завала проекта группой Java программистов и менеджеров гораздо выше... "Процесс" это как раз хороший способ создать видимость бурной деятельности и оправдать распил бабла...

А как иначе можно организовать работу большой команды разработчиков так, чтобы можно было контролировать трудозатраты и завершать проекты во время? Если разрабатывать проекты бесконтрольно,то если вдруг начнутся какие-то проблемы, руководство не сможет даже их компенсировать, потому что просто о них своевременно не узнает. К сожалению, разработка без процесса - это просто urban legend среди программистов.

Alviss
()
Ответ на: комментарий от Alviss

учитывай что твое мнение biased твоим окружением. Ты случайно не в телме работаешь?:)

dilmah ★★★★★
()
Ответ на: комментарий от Alviss

> К сожалению, разработка без процесса - это просто urban legend среди программистов.

есть теплые места:)

dilmah ★★★★★
()
Ответ на: комментарий от mv

>> В развитом процессе разработки нет противоречия между кодированием и разработкой в целом.

>В развитом коммунизме нет противоречия между социализмом и коммунизмом в целом. Какую мысль до публики хотели донести?

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

Alviss
()
Ответ на: комментарий от Alviss

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

Да только все нормальные архитектуры выдуманы опробованы и описаны. А если нет - то это незрелые архитектуры и использовать их нельзя.

ДА и желающих много вместо работы архитекторить. Мест на всех не хватает :(

anonymous
()
Ответ на: комментарий от Alviss

> Если программисту не нравится писать код, он может заниматься архитектурными проблемами, а кодирование оставить тем, кому оно нравится.

Какой ужас, программиста, которому не нравится работать, и в архитекты? Ужас, ужас...

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

Что-то я ваши логические выкладки плохо понимаю...

mv ★★★★★
()
Ответ на: комментарий от Alviss

> Если программисту не нравится писать код, он может заниматься архитектурными проблемами, а кодирование оставить тем, кому оно нравится.

Есть задача: выкопать котлован для дома. Из инструментов есть всё: от чайной ложки до экскаватора. Я предлагаю использовать экскаватор, вы - лопату, т.к. лопата - мейнстрим, землекоп себе всегда найдёт работу, и строительное управление всегда найдёт землекопа взамен ушедшего. Не то что эти вредные экскаваторщики. Тут, по мановению вашей руки, на сцене появляется работник, которому вообще обламывает работать, что лопатой, что экскаватором. Возникает проблема: есть работа, есть работник, но работник не хочет работать. Что делать? Убедить, принудить или выгнать? Нет! Если не можешь работать, иди в начальники!

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

mv ★★★★★
()
Ответ на: комментарий от Alviss

Красиво говоришь, внушает. Только одну мелочишку забыл: кроме предсказуемости язык должен давать как можно более богатые возможности для реверс-инжениринга, ибо знание вместе с разработчиками уходит неизбежно. Так что java rocks, lisp stinks.

anonymous
()
Ответ на: комментарий от anonymous

> Еще ни одна фирма не разорилась из-за гения

Чушь. Сотни тысяч разорившихся. Гении не бывают хорошими бизнесменами.

Да и у хороших рейт успеха не особо высокий: основатель eBay успел разорить 6 своих предыдущих проектов, прежде чем этот сработал.

anonymous
()
Ответ на: комментарий от mv

> В NVidia тепло? :)

там нормально.

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

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

>> В NVidia тепло? :)

>там нормально.

Там разрабатывают на лиспе?

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

Т.е. вы с чем-то несогласны? Вы считаете, что разрабатывать на лиспе очень выгодно, только инвесторы в IT по своей природной глупости этого не понимают?

Alviss
()
Ответ на: комментарий от anonymous

> Только одну мелочишку забыл: кроме предсказуемости язык должен давать как можно более богатые возможности для реверс-инжениринга, ибо знание вместе с разработчиками уходит неизбежно. Так что java rocks, lisp stinks.

Нормально документировать проект надо и вот за этим действительно следует жестко следить. java убогий язычок с сильно ограниченными выразительными возможностями, lisp дает больше свободы, ею надо только уметь пользоваться, зачем обвешивать себя кандалами из страха слилшком быстро бегать? Дерьмо из пары 100K строк плохо продуманного и плохо документированного кода неразгребаемо в принципе независимо от языка.

anonymous
()
Ответ на: комментарий от anonymous

> Чушь. Сотни тысяч разорившихся. Гении не бывают хорошими бизнесменами.

Из-за гениев? То есть работал бы не гений, а обыкновенный хмырь он и не разорил бы компанию, чушь пороть не надо. Ей больно.

> Да и у хороших рейт успеха не особо высокий: основатель eBay успел разорить 6 своих предыдущих проектов, прежде чем этот сработал.

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

anonymous
()
Ответ на: комментарий от Alviss

> Т.е. вы с чем-то несогласны? Вы считаете, что разрабатывать на лиспе очень выгодно, только инвесторы в IT по своей природной глупости этого не понимают?

Гордиться только нечем, вы там в Чебоксарах, как и в Москве в общем-то давно стали рынком НИЗКОКВАЛИФИЦИРОВАННОЙ кодерской рабочей силы.

Проектов много, тупых аутсорсеров тоже. У многих аутсорсеров есть потребность в чернорабочих-кодерах, которые хоть пару строк могут написать на каком-нибудь C# или Java, в основном для них эти языки и разрабатывались. Потому что полный курс computer science не все могут осилить и такие люди идут нарасхват и их не хватает. Потому что сейчас в России таких коллективов или не осталось или они уже давно и плотно заняты.

Рынок для разработчиков на SmallTalk, Lisp, Ada, Erlang - это элитный рынок, толпы кодеров гордятся полученным образованием и участием в ынтерпрайз-разработках, но даже не подозревают о потолке выше которого их не пустят. Hint: сравните тематики семинаров для разработчиков в России и США.

anonymous
()

Вакансии для Lisp разработчиков в Минске

Минская компания КактусСофт www.cactussoft.biz формирует команду из 5ти Lisp разработчиков для серии проектов.

Суть работы:

The SW work consists in developing elaborate and high performance embedded code. The customer developed several Lisp-based simulators for multiple aspects of their work and there is still much more work they need in expanding these internal tools. The customer wants to establish hierachical behavioral simulation of subsystem designs that fit into their SW-based backplane simulator that shows how the system works in excruciating detail, and before they commit new ideas into new hardware boards or photonic subsystems.

Подробности по запросу. З/п зависит от опыта. job@cactussoft.biz ICQ 493-056-290 тел. в Минске 291 27 71

anonymous
()
Ответ на: комментарий от tailgunner

>А давай ты приведешь менее тривиальный пример? 8) Вот меня бы устроил Visitor - какая разница между вариантами Java/Си++ и Хаскела?

начнём с того, что Haskell поддерживает алгебраические типы данных. нативно. паттерн Visitor является ООП-механизмом (корявым, но в общем-то единственно возможным) для обеспечения операций над ними в ООП-языках. в Haskell он просто не нужен

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

> Haskell поддерживает алгебраические типы данных. нативно. паттерн Visitor является ООП-механизмом (корявым, но в общем-то единственно возможным) для обеспечения операций над ними в ООП-языках. в Haskell он просто не нужен

Если бы ты дал пример или ссылку на него... а так - эту фразу я тоже умею выдавать, как тот рекламный ролик о Лиспе :).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Вообще, есть где-нибудь "официальный перевод" паттернов GoF на функциональный язык? Или функциональщики выше такий житейских мелочей, как паттерны? 8)

вы с дуба рухнули ? на кой чёрт в Haskell/ML ООП-паттерны ? что касается паттернов ФП, то в принципе они, конечно, есть. вот для начала почитайте это : http://www.mm.informatik.tu-darmstadt.de/~kuehne/fps/

но вообще паттерны проектирования в том смысле, в каком их вводили банда четырёх, в функциональном программировании смысла не имеют. достаточно просто попробовать написать программу в функциональном стиле, чтобы понять - почему

jtootf ★★★★★
()
Ответ на: комментарий от tailgunner

>Если бы ты дал пример или ссылку на него... а так - эту фразу я тоже умею выдавать, как тот рекламный ролик о Лиспе :).

пример чего ? вот решение одной и той же задачи с ООП (использование паттерна Visitor) и с ФП (без оного) :

http://boost.org/libs/graph/doc/visitor_concepts.html

http://haskell.org/ghc/docs/latest/html/libraries/containers/Data-Graph.html

каких ещё примеров тебе дать ?

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

>> Вообще, есть где-нибудь "официальный перевод" паттернов GoF на функциональный язык? Или функциональщики выше такий житейских мелочей, как паттерны? 8)

> вы с дуба рухнули ?

А ты с пальмы слез?

> на кой чёрт в Haskell/ML ООП-паттерны ?

Об этом и был вопрос. Вежливо заданный, заметь. Я правильно понял, что твой ответ - "В Haskell/ML аналогов ООП-паттернов нет, ибо они не нужны"?

> вот решение одной и той же задачи с ООП (использование паттерна Visitor) и с ФП (без оного) :

> http://boost.org/libs/graph/doc/visitor_concepts.html

> http://haskell.org/ghc/docs/latest/html/libraries/containers/Data-Graph.html

Спасибо.

> каких ещё примеров тебе дать ?

Сравнения типовых решений паттернами GoF и паттернами ФП.

tailgunner ★★★★★
()
Ответ на: комментарий от mv

>В чём разница между паттерном Singleton в Си и в Хаскеле?

в фортунки

jtootf ★★★★★
()
Ответ на: комментарий от tailgunner

>А ты с пальмы слез?

ты знал !

>> на кой чёрт в Haskell/ML ООП-паттерны ? >Об этом и был вопрос. Вежливо заданный, заметь. Я правильно понял, что твой ответ - "В Haskell/ML аналогов ООП-паттернов нет, ибо они не нужны"?

да, совершенно верно

>Спасибо.

пожалуйста

>Сравнения типовых решений паттернами GoF и паттернами ФП.

в одной книге ? вряд ли. паттерны, описанные в книге GoF - это методы хорошего решения задач, плохо решаемых с помощью ООП. т.е. задачи, которые методами ООП решаются неочевидно, а стало быть требуют guidelines, указаний - как делать хорошо, а как плохо. зачем подобные задачи рассматривать в документации, посвящённой ФП-проектированию - непонятно. там есть свои плохо решаемые задачи, тот же ввод/вывод, состояние системы. и свои методы их решения

jtootf ★★★★★
()
Ответ на: комментарий от mv

>Кстати говоря, если память не изменяет, то Гамма в своей книжке примеры паттернов приводит на плюсах и смоллтолке.

в "своей книжке" (ЕМНИП диссертации) он примеры приводил исключительно на Smalltalk. в книге GoF есть примеры на Smalltalk - именно потому, что Гамма писал на нём. остальные участники банды - Джонсон, Хелм и Влиссидес - писали на С++, соответственно и основная масса примеров в книге GoF именно на нём

jtootf ★★★★★
()
Ответ на: комментарий от anonymous

>Потому, что ценит своё время. Соотношение трудозатрат к качеству у >Лиспа препаршивейшее.

Ложь. С чего бы это ? Там где на других языках приходится городить всякую херню в Лиспе решение всегда на много проще.

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

Статическая типизация не избавляет от ошибок. Сильное тестирование гораздо лучше сильной типизации.

>Во вторых - отсутствие вменяемых средств разработки.

Ложь. Существует достаточно широйкий диапазон средств разработки, например Allegro CL вообще похож на Delphi.

>Вся отладка на уровне архаичных тестов в REPL

Бугага какой бред.

>, чрезмерно богатые возможности метапрограммирования не позволяют >написать IDE, знакомую с AST языка - в результате всё приходится >писать ручками.

Ну ты отжег, это же Лисп, его AST доступен напрямую. Естественно все Лисп IDE легко разбирают синтаксис и могут делать что угодно силами пользователя в отличие от других языков. Ручки у тебя наверное крючки ? :-)

>В третьих (хоть это и лечится) - абсолютно невменяемый синтаксис.

Да ну! Невменяемый синтаксис - это у сам знаешь какого языка.

>Ну и главное - отстутствие библиотек,

Бредятина. Библиотек всяких - море.

> невозможность полноценной интеграции с кодом на других языках

???? С, Java, .NET - все красиво и прозрачно, что еще надо ?

>и совершенно психически неуравновешенное сообщество, к которому >нереально обращаться за поддержкой. Сравните с тёплым и душевным >сообществом профессионалов, использующих PHP или Java.

И правильно, таких посылать надо подальше - ничего не знает, а гонору.

anonymous
()
Ответ на: комментарий от Alviss

Если не хватает ума это организовать на каком-либо другом языке кроме Java, то зачем поливать грязью другие языки ? Кто тут вообще говорил что-то против организации работы и процесса ? Лисп заставляет специально вносить хаос в процесс разработки ?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.