Re[28]: Сложный язык для сложных срограмм.
От: BulatZiganshin  
Дата: 09.02.07 08:25
Оценка:
E>Вы меня, конечно, извините, но в ваших словах мне так и слышится бравада: "Я освоил Хаскел! Я проперся от него! Я познал неведомое доселе!". И вспоминается мне один очень талантливый мужик, фанат Пролога, который несколько лет назад написал на Прологе офигенную систему. В которой никто не мог разобраться кроме него. Более того, когда однажды потребовалось выяснить причину ее странного поведения в какой-то ситуации, на вопрос "А как она вообще работает" он ответил -- "А хрен его знает". И закончилось все, как и можно было ожидать, тем, что после его ухода все творение было в довольно короткий срок переписано на C++ парой вчерашних студентов. И работало затем несколько лет без нареканий. Причем те студенты сейчас ведут еще более серьезные проекты и слова Хаскел, я думаю, даже не слышали.

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

в общем, на таких ошибках учатся. я с тех пор никогда больше не перегружал препроцессор. и мой 15-летний опыт коммерческой разработки, вот таких вот удачных и неудачных решений, отлажки, копирования кода, выписания шаблонных конструкций языка, позволил выработать определённые идеи о том, как нужно программировать и что для этого от ЯП нужно. языков я изучал множество — от APL до Явы, так что могу сравнивать

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

create_archive_structure | read_input_files | compress | write_to_archive

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

при этом одновременно я пишу и на C, так что могу сравнивать получается так, что я сначала продумываю алгоритм на уровне того, как он должен обрабатывать данные, а затем сажусь и выписываю все те циклы и присваивания, которые до этого придётся выполнить. так что могу сказать и чем знание хаскела помогаетв низкоуровневом программировании — чётче декомпозиция задачи, возникает предлстваление о ней как о наборе отдельных процессов преобразования данных с ясно определённым входом и выходом
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.