LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

Ну а здесь мы постепенно переходим собственно к лиспу. В компайл-тайме, безусловно все это дело делать лучше. Только вот нормально оно в компайл-тайме делается только в лиспе

я ничего не понял, а чем

instance FromJSON Person
instance ToJSON Person


не нормально то в компил тайме? Как по мне так лучше некуда: и немногословно, и явно. Конечно для сложных случаев придётся писать руками разбор (вроде type-level гетерогенных записей), но для всяких там обычных вещей по моему лучше не придумаешь. Обращаю твоё внимание, тут даже темплейтхаскеля нет, просто дерайвгенерикс. Почему то ты пропустил этот аргумент.

Ну и да, в более «обычной» скале тоже это делается в одну строчку или около того, емпип. Правда дело было лет 5 назад и я уже не могу вспомнить была ли там нужна горячая замена или ещё что. Думаю в с++ темплейтами настрогать можно тоже, но не уверен, пусть плюсовики уточнят, если прочтут.

Похоже, ты под «обычными языками» понимаешь довольно узкую вещь вроде «позапрошлая версия дотнета и сишарпа». Ну это как бы не проблемы других языков сегодня, что вы так делали годы назад, не правда ли?

Для энтерпрайз-приложений покрывает достаточно большой процент.

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

В целом аргумент «в обычных языках так нельзя» - принять не могу, ибо всё у всех кому надо работает без всякой горячей замены. Я уж молчу про всякие пхп, руби и яваскрипты с питонами.

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

О, вспомнил, можно еще удобно делать систему динамических плагинов, например.

смею заверить делается даже в си и горячей замены не требует.

Так в этом же и прикол. И это не с жабой связано, и не с рантаймом какого-либо языка вообще(хотя некоторые компилируются долго просто ад, типа C++), а просто чем больше программа, тем больше там всякой инициализации, и прочего. На даже среднего размера проектах, все эти циклы «поправил строчку» -> «f5» -> «ждем, пьем чай», они невероятно утомляют.

я и говорю, в этом и прикол что когда есть репл, это так часто не надо. так уж получается.

В целом в хаскеле, зачастую если функция компилится(а может и в большинстве случаев), то она работает верно.

Это ошибочное мнение чуть не каждого адепта статики. Ошибки в программах в основном в логике.

Нет. Обычно ошибку в «логике» нужно протащить через типы везде, а это довольно сложно (ну или ты пишешь просто не то что нужно, но тогда какие претензии...). Варианты есть, но это надо делать «не приходя в сознание» и потратить много сил. Обычно как раз концы с концами не сходятся, типа там не додумал, тут неучёл. А типы от этого защищают очень неплохо. Бывает и необычно. Но на то оно и необычно что не обычно.

В лиспе кстати, методы разработки, обычно, сильно отличаются от «динамических языков», там метапрограммируют во все поля. Поэтому часто код выглядит даже стройнее, чем в любой статике.

Не обсуждаю чего там у вас в лиспе может быть стройного - всё равно что сказать «код на яваскрипте стройный».

да, по зависимым типам - во первых то что не тьюринг полный обычно значит что нельзя написать нечто вроде while(true){...};. Вообще то это не ахти какое ограничение. Во вторых, они таки полные. В третьих, надо сказать не сильно неудобнее хаскеля, я в общем то считаю цену приемлемой (пока, но я только осваиваю).

Исправление AndreyKl, :

Ну а здесь мы постепенно переходим собственно к лиспу. В компайл-тайме, безусловно все это дело делать лучше. Только вот нормально оно в компайл-тайме делается только в лиспе

я ничего не понял, а чем

instance FromJSON Person
instance ToJSON Person


не нормально то в компил тайме? Как по мне так лучше некуда: и немногословно, и явно. Конечно для сложных случаев придётся писать руками разбор (вроде type-level гетерогенных записей), но для всяких там обычных вещей по моему лучше не придумаешь. Обращаю твоё внимание, тут даже темплейтхаскеля нет, просто дерайвгенерикс. Почему то ты пропустил этот аргумент.

Ну и да, в более «обычной» скале тоже это делается в одну строчку или около того, емпип. Правда дело было лет 5 назад и я уже не могу вспомнить была ли там нужна горячая замена или ещё что. Думаю в с++ темплейтами настрогать можно тоже, но не уверен, пусть плюсовики уточнят, если прочтут.

Похоже, ты под «обычными языками» понимаешь довольно узкую вещь вроде «позапрошлая версия дотнета и сишарпа». Ну это как бы не проблемы других языков сегодня, что вы так делали годы назад, не правда ли?

Для энтерпрайз-приложений покрывает достаточно большой процент.

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

В целом аргумент «в обычных языках так нельзя» - принять не могу, ибо всё у всех кому надо работает без всякой горячей замены. Я уж молчу про всякие пхп, руби и яваскрипты с питонами.

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

О, вспомнил, можно еще удобно делать систему динамических плагинов, например.

смею заверить делается даже в си и горячей замены не требует.

Так в этом же и прикол. И это не с жабой связано, и не с рантаймом какого-либо языка вообще(хотя некоторые компилируются долго просто ад, типа C++), а просто чем больше программа, тем больше там всякой инициализации, и прочего. На даже среднего размера проектах, все эти циклы «поправил строчку» -> «f5» -> «ждем, пьем чай», они невероятно утомляют.

я и говорю, в этом и прикол что когда есть репл, это так часто не надо. так уж получается.

В целом в хаскеле, зачастую если функция компилится(а может и в большинстве случаев), то она работает верно.

Это ошибочное мнение чуть не каждого адепта статики. Ошибки в программах в основном в логике.

Нет. Обычно ошибку в «логике» нужно протащить через типы везде, а это довольно сложно (ну или ты пишешь просто не то что нужно, но тогда какие претензии...). Варианты есть, но это надо делать «не приходя в сознание» и потратить много сил. Обычно как раз концы с концами не сходятся, типа там не додумал, тут неучёл. А типы от этого защищают очень неплохо. Бывает и необычно. Но на то оно и необычно что не обычно.

В лиспе кстати, методы разработки, обычно, сильно отличаются от «динамических языков», там метапрограммируют во все поля. Поэтому часто код выглядит даже стройнее, чем в любой статике.

Не обсуждаю чего там у вас в лиспе может быть стройного - всё равно что сказать «код на яваскрипте стройный».

да, по зависимым типам - во первых то что не тьюринг полный обычно значит что нельзя написать нечто вроде while(true){...};. Вообще то это не ахти какое ограничение. Во вторых, они таки полные. В третьих, надо сказать не сильно неудобнее хаскеля, я в общем то считаю цену приемлемой (пока, но я только учусь).

Исправление AndreyKl, :

Ну а здесь мы постепенно переходим собственно к лиспу. В компайл-тайме, безусловно все это дело делать лучше. Только вот нормально оно в компайл-тайме делается только в лиспе

я ничего не понял, а чем

instance FromJSON Person
instance ToJSON Person


не нормально то в компил тайме? Как по мне так лучше некуда: и немногословно, и явно. Конечно для сложных случаев придётся писать руками разбор (вроде type-level гетерогенных записей), но для всяких там обычных вещей по моему лучше не придумаешь. Обращаю твоё внимание, тут даже темплейтхаскеля нет, просто дерайвгенерикс. Почему то ты пропустил этот аргумент.

Ну и да, в более «обычной» скале тоже это делается в одну строчку или около того, емпип. Правда дело было лет 5 назад и я уже не могу вспомнить была ли там нужна горячая замена или ещё что. Думаю в с++ темплейтами настрогать можно тоже, но не уверен, пусть плюсовики уточнят, если прочтут.

Похоже, ты под «обычными языками» понимаешь довольно узкую вещь вроде «позапрошлая версия дотнета и сишарпа». Ну это как бы не проблемы других языков сегодня, что вы так делали годы назад, не правда ли?

Для энтерпрайз-приложений покрывает достаточно большой процент.

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

В целом аргумент «в обычных языках так нельзя» - принять не могу, ибо всё у всех кому надо работает без всякой горячей замены. Я уж молчу про всякие пхп, руби и яваскрипты с питонами.

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

О, вспомнил, можно еще удобно делать систему динамических плагинов, например.

смею заверить делается даже в си и горячей замены не требует.

Так в этом же и прикол. И это не с жабой связано, и не с рантаймом какого-либо языка вообще(хотя некоторые компилируются долго просто ад, типа C++), а просто чем больше программа, тем больше там всякой инициализации, и прочего. На даже среднего размера проектах, все эти циклы «поправил строчку» -> «f5» -> «ждем, пьем чай», они невероятно утомляют.

я и говорю, в этом и прикол что когда есть репл, это так часто не надо. так уж получается.

В целом в хаскеле, зачастую если функция компилится(а может и в большинстве случаев), то она работает верно.

Это ошибочное мнение чуть не каждого адепта статики. Ошибки в программах в основном в логике.

Нет. Обычно ошибку в «логике» нужно протащить через типы везде, а это довольно сложно (ну или ты пишешь просто не то что нужно, но тогда какие претензии...). Варианты есть, но это надо делать «не приходя в сознание» и потратить много сил. Обычно как раз концы с концами не сходятся, типа там не додумал, тут неучёл. А типы от этого защищают очень неплохо. Бывает и необычно. Но на то оно и необычно что не обычно.

В лиспе кстати, методы разработки, обычно, сильно отличаются от «динамических языков», там метапрограммируют во все поля. Поэтому часто код выглядит даже стройнее, чем в любой статике.

Не обсуждаю чего там у вас в лиспе может быть стройного - всё равно что сказать «код на яваскрипте стройный».

Исходная версия AndreyKl, :

Ну а здесь мы постепенно переходим собственно к лиспу. В компайл-тайме, безусловно все это дело делать лучше. Только вот нормально оно в компайл-тайме делается только в лиспе

я ничего не понял, а чем

instance FromJSON Person
instance ToJSON Person


не нормально то в компил тайме? Как по мне так лучше некуда: и немногословно, и явно. Конечно для сложных случаев придётся писать руками разбор (вроде type-level гетерогенных записей), но для всяких там обычных вещей по моему лучше не придумаешь. Обращаю твоё внимание, тут даже темплейтхаскеля нет, просто дерайвгенерикс. Почему то ты пропустил этот аргумент.

Ну и да, в более «обычной» скале тоже это делается в одну строчку или около того, емпип. Правда дело было лет 5 назад и я уже не могу вспомнить была ли там нужна горячая замена или ещё что. Думаю в с++ темплейтами настрогать можно тоже, но не уверен, пусть плюсовики уточнят, если прочтут.

Похоже, ты под «обычными языками» понимаешь довольно узкую вещь вроде «позапрошлая версия дотнета и сишарпа». Ну это как бы не проблемы других языков сегодня, что вы так делали годы назад, не правда ли?

Для энтерпрайз-приложений покрывает достаточно большой процент.

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

В целом аргумент «в обычных языках так нельзя» - принять не могу, ибо всё у всех кому надо работает без всякой горячей замены. Я уж молчу про всякие пхп, руби и яваскрипты с питонами.

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

О, вспомнил, можно еще удобно делать систему динамических плагинов, например.

смею заверить делается даже в си и горячей замены не требует.