Not a Number ([info]109) wrote,
@ 2009-11-07 15:23:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:dev

haskell: random observations
прикольно наблюдать дуализм; как какие-то свойства языка, вызывающие у хаскельников гордость, имеют на самом деле side effects, которые приходится лечить дополнительными заплатками. например, "concise" syntax (без скобок, явного объявления типов, etc.) приводит к тому, что читать труднее. для облегчения чтения придумываются другие вещи, типа relative vertical positioning (что с точки зрения free-flow языков вообще признак тридцатилетней отсталости).

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




(15 comments) - (Post a new comment)


[info]ivan_ghandhi
2009-11-08 12:49 am UTC (link)
Неймспейсы - это, покуда, полный каюк, конечно; они, имхо, выдают древность и немасштабируемость языка. Пробелы вместо скобок тоже во многих случаях - глупость.

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

Насчёт же сайдэффектов и т.п. - тут вешь очень серьёзная, и простыми программистскими холиворами этот вопрос решать или даже обсуждать бессмысленно. Это как один, пардон, хуй из Китая вздумал вдруг нас учить, что нельзя пользоваться интерфейсами, т.к. они неэффективны, а надо сразу указывать классы.

(Reply to this) (Thread)


[info]109
2009-11-08 09:09 am UTC (link)
в нормальной человеческой логике неймспейсы - это как раз механизм масштабирования. как в твоей логике получилось наоборот is beyond me.

я не спорю, кого-то может и выносит. например того, кто писал на джаве 8-Р, где лучшим приближением к функции как объекту является Listener. а кто ещё десять лет назад писал на эвентах на дельфи, того как бы и выносить особо не надо :)

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

(Reply to this) (Parent)(Thread)


[info]ivan_ghandhi
2009-11-11 03:02 pm UTC (link)
Я, конечно, имел в виду, что отсутствие грамотно организованных неймспейсов в Хаскеле приводит к немасштабируемости.

Но на самом деле неймспейсы там есть.

(Reply to this) (Parent)


[info]wizzard0
2009-11-08 01:35 am UTC (link)
Вербозность сишарпа можно вылечить (имхо).

Если Эрик Липперт с Мейером найдут, как добавить туда глобальное type inference, не ломающую бэк-компатибилити.

(Reply to this) (Thread)


[info]wizzard0
2009-11-08 01:36 am UTC (link)
А вообще, самый concise syntax у Питона. При том, не теряющий читабельности и позволяющий использовать скобки и писать one-liners, если оч захочется.

Но питон медленный и ему не хватает опциональных type contracts

(Reply to this) (Parent)(Thread)


[info]anton_solovyev
2009-11-08 02:55 am UTC (link)
Кстати, а как потестировать медленность Python?

(Reply to this) (Parent)(Thread)


[info]wizzard0
2009-11-08 02:58 am UTC (link)
ну, э, смотря для чего. я на нем просто игры писать пытаюсь, и прочий soft realtime.

причем работает. но хочется сильно быстрее.

опишите задачу

(Reply to this) (Parent)(Thread)


[info]anton_solovyev
2009-11-08 03:13 am UTC (link)
Описать задачу не могу, ибо на Python легче сказать что не делается...

Можно попробовать для убыстрения переписать критическое на C, вдруг поможет. SWIG и вперед.

(Reply to this) (Parent)


[info]109
2009-11-08 09:10 am UTC (link)
глобальное type inference - это что?

(Reply to this) (Parent)(Thread)


[info]wizzard0
2009-11-08 12:39 pm UTC (link)
В данном контексте - чтобы infer'ились не только локальные переменные, а и типы членов класса. Хотя бы в пределах одной сборки.

(Reply to this) (Parent)


[info]anton_solovyev
2009-11-08 02:58 am UTC (link)
Мне тоже наезды на многословность, скажем, Java непонятны. Скажем, в Python мне часто хочется помногословнее...

(Reply to this) (Thread)


[info]109
2009-11-08 09:14 am UTC (link)
многословность безусловно вредна в one-off script-like поделках. а чем фундаментальнее код, тем больше в нём read/write ratio, и очень скоро readability становится самым важным фактором. чему краткость, очевидно, больше мешает, чем помогает:

(Reply to this) (Parent)


[info]metaclass
2009-11-08 10:07 am UTC (link)
В хаскеле ж вместо неймспейсов модули, с возможным переименованием при импорте. Хотя посмотреть, как это подойдет для крупных проектов, было бы интересно, да.

(Reply to this) (Thread)


[info]109
2009-11-08 10:13 am UTC (link)
мнээ... переименованием чего?

(Reply to this) (Parent)(Thread)


[info]metaclass
2009-11-08 10:47 am UTC (link)
Ну вот эти конструкции для импорта модулей:
import qualified ... as ...
import ... hiding (...)
import ...(...)

Они, по моему, в качестве замены неймспейсов подойдут вполне.

(Reply to this) (Parent)


(15 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…