Гуры, проповедующие, что язык программирования тем более велик, чем больше сложных преобразований можно в нём впихнуть в одну строчку, напоминают мне тех заказчиков, которые требуют, чтобы единственным элементом управления программы была кнопка «Start».
no subject
Date: 2013-05-02 01:34 pm (UTC)примеры
(1 to 10) map { _ * 2 }
еще
val fileLines = io.Source.fromFile("data.txt").getLines.toList
еще
val (passed, failed) = List(49, 58, 76, 82, 88, 90) partition ( _ > 60 )
еще
(кстати, тут параллельная обработка)
val result = dataList.par.map(line => processItem(line))
no subject
Date: 2013-05-02 01:39 pm (UTC)Можно. Если пишешь книжку по красивые языки программирования.
В реальном проекте это работает плохо. Потому что сложность порождает ошибки. Плюс, чем сложнее строчка, тем больше проблем с модификацией. Тем боле, если люди скопировали с Гугла и не очень хорошо понимают, что внутри.
no subject
Date: 2013-05-02 01:43 pm (UTC)no subject
Date: 2013-05-02 02:34 pm (UTC)no subject
Date: 2013-05-02 10:27 pm (UTC)Сложнее - это когда для такой вот фигни начинают писать циклы с выделениями памяти, указателями и прочей херотенью.
no subject
Date: 2013-05-02 10:34 pm (UTC)no subject
Date: 2013-05-02 10:53 pm (UTC)Вот примеры выше - такие и есть. Без всяких там временных переменных, присваиваний, выделений/освобождений и прочего смыслового мусора.
no subject
Date: 2013-05-02 10:58 pm (UTC)Примеры выше в реальном проекте будут бредом. Надеюсь, не надо объяснять, если у нас проблема в умножении элементов массива на два, значит какие-то траблы с пониманием задачи.
no subject
Date: 2013-05-02 11:28 pm (UTC)no subject
Date: 2013-05-02 01:46 pm (UTC)Ну и что-то вроде (select [a b c] :from table :where predicate ) или (map (juxt :a :b :c) (filter predicate table)) выглядит гораздо лучше и понятнее чем то же самое, разложенное на десяток строк и анонимных классов.
no subject
Date: 2013-05-02 02:30 pm (UTC)no subject
Date: 2013-05-02 02:38 pm (UTC)no subject
Date: 2013-05-02 02:54 pm (UTC)no subject
Date: 2013-05-02 03:18 pm (UTC)SQL - это уже магия. Оптимизацию надо проверять на реальных данных.
no subject
Date: 2013-05-02 04:04 pm (UTC)SQL способен выдавать сюрпризы просто в содержимом данных, безотносительно оптимизации.
Общий принцип тут наверное такой: пока выражение в хитром синтаксе делает что-то простое и одноуровневое, оно действительно коротко, понятно и полезно. Хоть регулярное выражение, хоть SQL, хоть продемонстрированный тут людьми map (кстати, в питоне такое называют comprehensions). А когда оно начинает навроачиваться слоями на слои, то делается непонятным, кривым и вредным.
В этом смысле интересен г-гловый стандарт кодописания на питоне: одноуровневые компрехенсии разрешаются и поощряются, многоуровневые - запрещаются. И он, наверное, разумный.
no subject
Date: 2013-05-02 02:38 pm (UTC)Ну-ну. Много я повидал у программистов так называемых "теоретических обоснований".
То, что выглядит лучше и понятнее, да. При определённых условиях. Но пост только про то, что краткость не всегда сестра таланта.
no subject
Date: 2013-05-02 02:10 pm (UTC)no subject
Date: 2013-05-02 02:41 pm (UTC)В этом ракурсе наиболее мощный словарь был у Эллочки-Людоедки.
no subject
Date: 2013-05-02 02:44 pm (UTC)no subject
Date: 2013-05-02 03:22 pm (UTC)no subject
Date: 2013-05-03 12:25 pm (UTC)А мне почему-то сразу вспомнился Пёрл и разные чудесные конструкции на нем.
Типа
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
ps: Кстати, некоторые гайдлайны по Яве не рекомендуют использование даже тернаного оператора ? (который еще из С пришел).
if-конструкции, конечно, занимают несколько строк, но более читаемы.
no subject
Date: 2013-05-03 12:47 pm (UTC)Гайдлайны всем хороши, но правила там придумывают по методу "мне нравится" или "мы в школе проходили". Так что полезные вещи от мусора совершенно не отделены.
If конструкции не то, чтобы более читаемы, просто более надёжны. Впрочем, программистов, не освоивших ?: тоже видел.
no subject
Date: 2013-05-05 11:17 am (UTC)no subject
Date: 2013-05-05 11:46 am (UTC)2. В данной редакции вопрос звучит "Ты, гнида, против коммунистов?" На такое ответ всегда "Да". Просто, чтобы не расстраивать спрашивающего.
3. Гражданин по ссылке, по опыту общения с ним, слишком теоретик и слишком мало практик. В смысле реальных процессов и реальных людей.
4. Текст Наверняка откладывают выкладку в надежде хоть как-то отдокументировать работающий код говорит нам о том, что речь идёт об игрушке, а не о серьёзной работе.
5. Сама идея в том, что сокращение текста сокращает объём информации - порочна.