metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-09-03 09:31 pm
Entry tags:

Привет из 80х годов прошлого века

Вспомнил один срач на тему однопроходных компиляторов, где Steve Yegge критиковал Clojure за то, что в ней объявления видны не во всем модуле, а только ниже объявления. (Ну, за исключением declare которые что-то вроде forward-объявлений).
Сижу приделываю новую фичу к кодогенератору на F# - и таки внезапно оказывается, что это не только в Clojure, но так же и F#, и, что самое печальное, - в долбаном SQL, который я генерирую.
Сижу вот, сортирую объекты из которых генерируется SQL по зависимостям.

А как с этим дела обстоят в Scala?
Я тут подумываю, что надо бы провести сравнение F# и Scala на моих задачах, все равно уже полная работа JVM и жаб, так может, выводилка типов в Scala для меня окажется более приемлемой, чем дикий ад в F# (теперь я понимаю, почему его [livejournal.com profile] thesz критикует). Ну и макросы в скале [livejournal.com profile] xeno_by прикрутил вроде уже.
Хотя единственное, что мне приходит в голову на тему приличного использования макросов - это при их выполнении долбится в БД или модель этой БД и генерировать код.

[identity profile] theiced.livejournal.com 2012-09-03 08:55 pm (UTC)(link)
а вот вы лучше объясните нахуя скала если есть кложура. ну мне так, интересно.

[identity profile] metaclass.livejournal.com 2012-09-03 09:07 pm (UTC)(link)
Ломается при рефакторинге. Без типизации в проектах со сложными структурами данных будет жопа.

[identity profile] nivanych.livejournal.com 2012-09-04 03:06 pm (UTC)(link)
А в зависимо-типовых можно относительно недорого иметь _гарантию_ корректности рефакторинга.

[identity profile] xeno-by.livejournal.com 2012-09-03 09:24 pm (UTC)(link)
вероятно потому что полезная система типов (аргументы за и против типизации я приводить здесь не буду) + лично мне нравится как сделана модульность. я немного писал в каментах к недавнему посту Димы: http://my-clojure.blogspot.ch/2012/09/clojure-1-2012.html и у себя в ЖЖ.

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

[identity profile] golikov konstantine (from livejournal.com) 2012-09-03 10:06 pm (UTC)(link)
если правильно понимаю, но того же самого можно достичь используя костыли -- jrebel
но если не прав, поправьте
Edited 2012-09-03 22:07 (UTC)

[identity profile] xeno-by.livejournal.com 2012-09-03 10:12 pm (UTC)(link)
я если честно jrebel не юзал никогда, поэтому не могу ничего сказать. кстати что он делает с уже существующими в памяти объектами измененных классов? (с надеждой) прозрачно подменяет класс на новый?

[identity profile] golikov konstantine (from livejournal.com) 2012-09-03 10:44 pm (UTC)(link)
уже инстанциированные объекты ведут себя как старый класс, новые объекты ведут себя как новый подгруженный класс

[identity profile] anton-arhipov.livejournal.com 2012-09-19 07:48 pm (UTC)(link)
неверно. уже существующие экземпляры получают то же самое поведение, т.е новые методы и константы будут доступны всем.
новые поля в существующих объектах не будут проинизиализированы только, тк jrebel не перезапускает конструктор

[identity profile] golikov konstantine (from livejournal.com) 2012-09-19 09:13 pm (UTC)(link)
спасибо за исправление

хотел спросить когда можно будет перегружать суперклассы, а вы оказывается уже это поправили в новом jrebel'е
прямо вау-вау

[identity profile] anton-arhipov.livejournal.com 2012-09-20 04:56 am (UTC)(link)
супер классы сейчас не перегружаются

видимо у вас небольшое приложение, и сервер сам перезагрузил его так что вы не заметили.

[identity profile] theiced.livejournal.com 2012-09-04 06:28 am (UTC)(link)
я считаю статическую типизацию объективным злом.

[identity profile] xeno-by.livejournal.com 2012-09-04 07:00 am (UTC)(link)
а что насчет остального, если есть желание прокомментировать?

[identity profile] migmit.livejournal.com 2012-09-04 01:41 pm (UTC)(link)
> я считаю ... объективным ...

Взаимоисключающие параграфы.

[identity profile] blackyblack.livejournal.com 2012-09-05 05:30 am (UTC)(link)
+1. Но в то же время я считаю кложурь объективным говном.