Re[29]: Сложный язык для сложных срограмм.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 09.02.07 09:15
Оценка:
Здравствуйте, BulatZiganshin

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

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


Таких историй большинство участников форума могут привести множество. Это нормальный процесс обучения.

BZ>где-то в 60-70-х годах Дейкста написал книжку "взаимодействующие последовательные процессы", в которой ищлагался подход к написания параллельных и распределённых порграмм, не требующий явного описания семафоров, рандеву, мониторов и тому подобных низкоуцровневых вещей. в упрощённом виде его концепция используется в юниксовских пайпах. аналогичным образом устроена и моя программа — она состоит из 4 тредов, передающих информацию друг другу:


BZ>create_archive_structure | read_input_files | compress | write_to_archive


BZ>в свою очередь, compress разделяется ещё на несколько тредов, последовательно сжимающих данные. разве это не красиво? и позволило мне это реализовать именно наличие higher-order funcs. я думаю о своей программе не в плане отдельных значений которые нужно обработать, а в плане алгоритмов, из которых конструируются более сложные алгоритмы, при этом средства их конструирования также являются алгоритмами. вот это и есть метаподход к программированию на уровне хаскела


И это все правильно и замечательно. Но, есть две вещи:

* вы заостряете внимание на Хаскел. Чтож он вам нравится, он соответствуют вашим представлениям о том, как нужно программировать. Хотя на мой взгляд, попытки сравнения Хаскеля с другими языками в данном треде выглядят как "Круче Хаскел только яйца!". Показалось мне так. Обычное, думаю, дело -- один написал с одними мыслями, другой прочитал с другими мыслями;

* мое личное отношение к сложным вещам. Я здесь уже говорил об этом, зарабатывал кучу минусов, наживал обвинения в посредственности, но остался при своем. У людей разные способности, в том числе и по освоению/использованию сложных инструментов. Мне доводилось наблюдать это во время учебы на примерах изучения высшей математики (мат.анализ, в котором мало кто в нашей группе разбирался и еще меньшее количество людей могло применять полученные знания для решения практических задач) и Пролога (большинство вообще, представте, вообще не понимало, в чем дело). При том, есть небольшое количество индивидумов которым природой и воспитанием дадено воспринимать вещи по другому. Кто-то воспринимает математику как само собой разумеющееся, кто-то так же относится к программированию. Вот у меня, например, с программированием вообще никогда не было проблем, в том числе и с Прологом. В отличии от математики. Так вот, в программировании разные способности индивидумов так же проявляются. Кто-то хорошо программирует на Java, но плохо на C++, кто-то замечательно знает Пролог и может на нем сделать все, что угодно, а другой вообще не может понять, по каким правилам Прологовские программы работают. А раз у людей разные способности и пристрастия, то при некоторых условиях с этим приходится считаться. Например, при передаче чужого кода на сопровождение. При попытке заменить выбывшего по объективным причинам или форс-мажорным обстоятельствам человека. И здесь оказывается, что заменить Java программиста возможно. C++ программиста, в принципе, возможно. Найти адекватную замену Хаскел или Пролог программисту... Это мало реально еще и потому, что, по моим наблюдениям, те же Пролог программисты имеют очень высокий уровень, это не обычные кодеры, которым по жизни хватает один раз выученного языка и одной освоенной IDE, и работы над одинаковыми проектами. А значит, Хаскел и Пролог программисты подходят к своей работе более творчески и применяют неординарные идеи. Соответственно, удачно заменить их сможет только такой же продвинутый и неординарный человек. Так что остается всего ничего -- найти его. Ну или переписать все так, чтобы в дальнейшем ротация коллектива не была проблеммой.

А посему получается, что если вы делаете что-нибудь самостоятельно или в очень небольшой группе таких же как вы людей, то что Хаскел, что Пролог, что еще что-нибудь экзотическое -- нет разницы. Совсем другое дело -- дальнейшая судьба написанного вами кода, который вы по каким-то причинам, больше не можете сопровождать. Вот как раз мейнстримовые языки (даже такие ругаемые и проигрывающие конкурентам, как C и C++) имет здесь гораздо больший запас прочности. И большая многословность и даже проигрыше в функциональности у разработанных на мейнстримовых языках систем компенсируются вот этим вот запасом прочности.

Чтобы проилюстрировать эту мысль я и привел пример из собственного опыта.

Вот как-то так. Надеюсь, что врага я себе не нажил.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.