Выразительные управляющие конструкции
Jan. 30th, 2012 01:54 pmСейчас я выдам маркетинговое соображение на миллион долларов.
Жалко, что я на 999‰ не первый.
Итак, что мешает использовать полноценно функциональные языки в средах Java и .NET? Я даже задам более частный вопрос: что мешает использовать языки, управляющие конструкции которых являются выражениями?
Я знаю ответ на этот вопрос. Жирный фреймворк, жирные сторонние библиотеки и жирный код прикладных программ.
Автодополнение и кусочки документации по функциям, вылезающие при редактировании кода, это, конечно, хорошо. И помогает. Но проблема в том, что как в «родном» фреймворке (нечасто, родные фреймворки обычно хорошо проработаны), так и в сторонних библиотеках (сплошь и рядом) семантика вызываемых функций не всегда ясна программисту.
Я уже достаточно толст, стар и бородат, чтобы легко выдержать поток яиц с помидорами, который полетит в меня после того, как я скажу, что в таких ситуациях нередко помогает пошаговый отладчик. Может помочь и отладочная печать. Большой разницы нету, но первое быстрее. Они очень неплохо дополняют фиговую документацию, а часто и заменяют отсутствующую.
Так вот, даже функционального языка не надо, достаточно C# 4.0 с LINQ — это уже система со сносной выразительностью. Если только Вам позволено писать программу, в которой используются большие ВЫРАЖЕНИЯ, Ваша программа становится короче и выразительнее, но для отладки часто приходится эти выражения дробить и считать с использованием временных переменных. Потому что без отладки не всегда ясно, что всё-таки делают её части. А уж если программа вдруг не Ваша, а чужая...
Да, человек, который написал программу, являющуюся большим выражением, без единой лишней (без которой можно обойтись) временной переменной, вызывает уважение. Иногда даже стоит очередь из желающих уткнуться к нему в бороду. Но одно дело авторитет, а другое — реальная польза.
Если язык программирования хорошо статически типизирован, задача облегчается: сам компилятор хорошо помогает Вам сделать Вашу программу правильной. Но это же должно касаться и библиотек. Рыхлые объектно-ориентированные махины очень легко Вам всё испортят, особенно если их писали какие-нибудь балбесы.
Ну что, не поубавилось охоты писать на F# и Scala? У меня кстати, не смотря на собственные разумные, казалось бы, доводы, почему-то нет =).
Жалко, что я на 999‰ не первый.
Итак, что мешает использовать полноценно функциональные языки в средах Java и .NET? Я даже задам более частный вопрос: что мешает использовать языки, управляющие конструкции которых являются выражениями?
Я знаю ответ на этот вопрос. Жирный фреймворк, жирные сторонние библиотеки и жирный код прикладных программ.
Автодополнение и кусочки документации по функциям, вылезающие при редактировании кода, это, конечно, хорошо. И помогает. Но проблема в том, что как в «родном» фреймворке (нечасто, родные фреймворки обычно хорошо проработаны), так и в сторонних библиотеках (сплошь и рядом) семантика вызываемых функций не всегда ясна программисту.
Я уже достаточно толст, стар и бородат, чтобы легко выдержать поток яиц с помидорами, который полетит в меня после того, как я скажу, что в таких ситуациях нередко помогает пошаговый отладчик. Может помочь и отладочная печать. Большой разницы нету, но первое быстрее. Они очень неплохо дополняют фиговую документацию, а часто и заменяют отсутствующую.
Так вот, даже функционального языка не надо, достаточно C# 4.0 с LINQ — это уже система со сносной выразительностью. Если только Вам позволено писать программу, в которой используются большие ВЫРАЖЕНИЯ, Ваша программа становится короче и выразительнее, но для отладки часто приходится эти выражения дробить и считать с использованием временных переменных. Потому что без отладки не всегда ясно, что всё-таки делают её части. А уж если программа вдруг не Ваша, а чужая...
Да, человек, который написал программу, являющуюся большим выражением, без единой лишней (без которой можно обойтись) временной переменной, вызывает уважение. Иногда даже стоит очередь из желающих уткнуться к нему в бороду. Но одно дело авторитет, а другое — реальная польза.
Если язык программирования хорошо статически типизирован, задача облегчается: сам компилятор хорошо помогает Вам сделать Вашу программу правильной. Но это же должно касаться и библиотек. Рыхлые объектно-ориентированные махины очень легко Вам всё испортят, особенно если их писали какие-нибудь балбесы.
Ну что, не поубавилось охоты писать на F# и Scala? У меня кстати, не смотря на собственные разумные, казалось бы, доводы, почему-то нет =).