LINUX.ORG.RU
Ответ на: комментарий от true_admin

А что такое repl?

Уже ответили, а теперь чтобы понятнее было.

REPL это консолька, где ты можешь запускать команды. REPL сам по себе есть много где. Но в имаксе для лиспов есть ещё SLIME, который делает интеграцию REPLа и буфера редактирования посредством возможности вычисления выражений прямо из буфера. Т.е. запускаешь имакс, запускаешь SLIME, начинаешь редактировать файл. Написал функцию, нажал C-x C-e, выполнилось eval-last-sexp - код функции выполнился, к лиспообразу добавился этот код. Переписал функцию, сделал eval-last-sexp - код в образе изменился. Это очень удобно - писать и сразу получать результат выполнения никуда не выходя.

Reaper ★★
()
Ответ на: комментарий от vertexua

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

ugoday ★★★★★
()
Ответ на: комментарий от JFreeM

PL/SQL --- менее популярен, чем лисп. Следует ли из этого, что PL/SQL --- академическая разработка?

ugoday ★★★★★
()
Ответ на: комментарий от vertexua

Ну так это называется «маргинальным, на хер никому не нужным языком», а не «академическим» языком. Академический язык - это, например, красивый и правильный Оберон. Java тоже вполне себе академический язык. А лишп - это дебилистический язык. Не надо обижать академиков.

anonymous
()
Ответ на: комментарий от true_admin

А тестирование как при этом делается? Тоже на лету? Что делать если надо изменить структуру данных в памяти для запуска новой версии приложения?

eval-last-sexp своей изменённой структуре - она меняется в образе, eval-last-sexp на функции для теста - смотришь результат.

Reaper ★★
()
Ответ на: комментарий от ugoday

КЛ дал тебе саму возможность писать на Скале

Признателен. Теперь его можно выбросить? Вообще нет, нифига это не лисп, ибо не вижу вообще ни одного s-выражения

CLOS+MOP

Это там где так обьекты страшно описываются? Профиты в чем?

рестарты и перезапуски

возможно еще собаки и доги, коты и кэты? Вы вообще о contiuations? Сделали, боян.

макры

Зачем?

Вообще не в точку. Я знаю хорошо чего в scala нет и мог бы себя затроллить поэффективнее вас, но вы похоже кроме лиспа ничего не слышали в жизни

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Зелен, зелен виноград

Если вакансий мало, то язык или академичный или не нужный. Но я склоняюсь к тому что scala академичная. Или другой вариант? )

фксд.

ugoday ★★★★★
()
Ответ на: комментарий от true_admin

А тестирование как при этом делается?

Обычные юнит/функциональные тесты.

Что делать если надо изменить структуру данных в памяти для запуска новой версии приложения?

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

baverman ★★★
()
Ответ на: комментарий от ugoday

Scala вообще говоря готова к продакшну хотя бы потому, что умеет все что умеет Java и имеет доступ ко всем либам. А это очень много. Плюс вкусное ФП

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Программировать в таком случае нужно без состояния?

Наоборот, без состояния это совершенно бессмысленно, проще юниттест набросать.

baverman ★★★
()
Ответ на: комментарий от anonymous

Функции высшего порядка и замыкания вполне безобидны. Главное городить не надо как в SICP

vertexua ★★★★★
()
Ответ на: комментарий от baverman

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

несмотря на аватарку, изображающую Ъ-лиспера за работой, не вижу каких-то концептуальных отличий

shty ★★★★★
()
Ответ на: комментарий от vertexua

Если структуры изменятся и ваша функция будет несовместима с данными в памяти, что тогда?

Функция меняется тоже.

baverman ★★★
()
Ответ на: комментарий от shty

Смотри выше по треду, я развернул понятие. Если нет концептуальных различий, то давай аналогию для другого языка.

baverman ★★★
()
Ответ на: комментарий от vertexua

Теперь его можно выбросить?

Нельзя. Ещё не все «ненужные» фичи мейнстримные языки успели стырить у лиспа.

нифига это не лисп, ибо не вижу вообще ни одного s-выражения

Наличие, а равно как и отсутствие s-exp не являются квалифицирующим признаком, позволяющим однозначно отнести ЯП к лиспу. Например М-лисп, это тоже лисп. И внутренний язык loop --- тоже лисп.

Это там где так обьекты страшно описываются?

Экой вы пугливый да робкий. Вам штангу потягать либо мешок боксёрский поколотить вместо того, чтобы кофе пить литрами. Глядишь нервишки-то и успокоятся.

Профиты в чем?

Сделали, боян.

Зачем?

Благодарю. Вы отлично проиллюстрировали мои слова о том, что те фичи, которые уже стырили у лиспа, объявляются крайне необходимыми, а те, что ещё не успели стырить, объявляются совершенно ненужными.

Таким образом достаточно подождать и вы сами в будущих срачах на лоре будете всем доказывать необходимость CLOS и макр. А я пока могу попить вкусный и полезный зелёный чай.

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

Да, не напомнишь, где это я объявлял себя знатоком скалы? Никак не могу найти это сообщение.

ugoday ★★★★★
()
Ответ на: комментарий от vertexua

> Вы уходите от вопроса, что позволяет сделать вывод что вы не видели scala в жизни.

Это высказывание можно вернуть, заменив scala на cl.

Лично я бы не стал противопоставлять эти языки. Мне нравятся оба. Они на голову выше большинства современных языков. Но скалу портит одно обстоятельство - она привязана к монструозной JVM.

dave ★★★★★
()
Ответ на: комментарий от JFreeM

Лучше учить x86-ассемблер и APL параллельно. Тогда через неделю можно будет начать писать на любом языке.

buddhist ★★★★★
()
Ответ на: комментарий от vertexua

концепты лисповские.

Охренеть не встать. Даже самый радикальные, самые упоротые фанбои лиспа не предъявляли требование признать исключительной лисповой прерогативой построение программ из модулей, разделённых абстрактными интерфейсами.

Ну, что ж. Примем, что и это тоже всё наше.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Наличие, а равно как и отсутствие s-exp не являются квалифицирующим признаком, позволяющим однозначно отнести ЯП к лиспу. Например М-лисп, это тоже лисп. И внутренний язык loop --- тоже лисп.

Что-то новое. Так что же такое лисп тогда? Не нашел нигде тут Scala

Благодарю. Вы отлично проиллюстрировали мои слова о том, что те фичи, которые уже стырили у лиспа, объявляются крайне необходимыми, а те, что ещё не успели стырить, объявляются совершенно ненужными.

Вы отрицаете заимствование идей. Прямо уж, если в лиспе что-то появилось впервые, но лисп унылое говно, то это как раз повод добавить полезные фичи в нормальные ЯП. Лисп - экспериментальный полигон на котором все оттеситили. Можно выбрасывать.

Да, не напомнишь, где это я объявлял себя знатоком скалы? Никак не могу найти это сообщение.

Ну чтобы заявлять что что-то лисп или убогое, нужно хоть чуть чуть разбираться, хоть на базовом уровне. У вас же аргументы с воздуха

vertexua ★★★★★
()
Ответ на: комментарий от dave

Мне вопрос во первых не задавали, но если задаете, то вам стоить узнать что такое Java EE, EJB, JPA, JSF и 100500 либ от Apache Foundation. Это все идет с Java в Scala.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Вы отрицаете заимствование идей.

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

Лисп - экспериментальный полигон на котором все оттеситили. Можно выбрасывать.

А откуда тогда мейнстрим будет тырить свежие и оригинальные идеи?

Ну чтобы заявлять что что-то лисп или убогое, нужно хоть чуть чуть разбираться, хоть на базовом уровне.

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

ugoday ★★★★★
()
Ответ на: комментарий от vertexua

С++ - не энтерпрайз

Читай по губам: Ха-Ха-Ха!

ugoday ★★★★★
()
Ответ на: комментарий от vertexua

эм. По-моему, это весьма ошибочное мнение. На плюсах как минимум, написана сама JVM + все более-мене используемые БД, не говоря уже об Apache и nginx. Да и вообще на C++ написано практическо все ПО, которым мы пользуемся.

JFreeM ★★★☆
()
Ответ на: комментарий от ugoday

Скалу я критиковал только за корявый внешний вид и более ни за что.

Лисперам о корявом внешнем виде лучше молчать. Фактор субъективный. Согласны? Лишь объективные факты можно установить в споре. А вот если вещь субъективна, то можно сделать опрос, просто ради интереса. Результаты вам не понравятся.

Что я отрицаю, так это плагиат. Взял чужую идею --- имей смелость признать это

Все признают что почти все ЯП проистекают или от лиспа или от алгола60. Это повод юзать старье 50 летней давности, такое как лисп, который стал популярным из-за простого интерпретатора?

А откуда тогда мейнстрим будет тырить свежие и оригинальные идеи?

Лисп уже ничего полезного скорее всего не предложит

vertexua ★★★★★
()
Ответ на: комментарий от JFreeM

Все эти задачи требуют очень хорошей оптимизации. Использовать С++ оправдано. Но бизнес логика на С++ - явление странное

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

> то вам стоить узнать что такое Java EE, EJB, JPA, JSF и 100500 либ от Apache Foundation. Это все идет с Java в Scala.

Читал, писал... Ничего интересного не нашел. Энтерпрайз он и есть энтрерпрайз. Скучно.

dave ★★★★★
()
Ответ на: комментарий от dave

Я лично вообще графику люблю. Без проблем можно писать на Java. Но эта же Java решает задачи энтерпрайза. Разве не замечательно.

vertexua ★★★★★
()
Ответ на: комментарий от ugoday

>> Лисп - экспериментальный полигон на котором все оттеситили. Можно выбрасывать.

А откуда тогда мейнстрим будет тырить свежие и оригинальные идеи?

И какие свежие и оригинальные идеи были сперты из Лиспа за последние 10-15 лет?

tailgunner ★★★★★
()
Ответ на: комментарий от JFreeM

Я бы поосторожничал упоминать эти языки через слеш. Абсолютно разная культура программирования и качество результата. Если судить только по синтаксису, то можно смело писать C/C++/Java.

baverman ★★★
()
Ответ на: комментарий от ugoday

> рестарты и перезапуски --- это продвинутый механизм обработки исключений

...реадизованный еще в PL/I, рассмотренный и отвергнутый при разработке Си++.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> И какие свежие и оригинальные идеи были сперты из Лиспа за последние 10-15 лет?

Аспектное программирование? И еще, не знаю смолтока, но та же рефлексия сильно смахивает на лисповский mop.

А, вообще, вопрос интересный. Ведь стандарт лиспа как раз не менялся за последние лет пятнадцать. Тут можно поставить вопрос, а «какие свежие и оригинальные идеи появились за последние 10-15 лет в программировании, вообще?»

dave ★★★★★
()
Ответ на: комментарий от tailgunner

> рассмотренный и отвергнутый при разработке Си++

Толсто. В комитете был всего один человек, который имел опыт сопровождения большого объёма код на CL и он сказал «не нужно». На этот обсуждение рестартов в C++ закончилось.

archimag ★★★
()
Ответ на: комментарий от JFreeM

А зачем класс для функции len? Функции класс не нужен, на то она и функция.

Norgat ★★★★★
()
Ответ на: комментарий от dave

>> И какие свежие и оригинальные идеи были сперты из Лиспа за последние 10-15 лет?

Аспектное программирование?

Первая публикация в 1997 - да, укладывается в 15 лет. В статье используется лисповый синтаксис, но там же сказано, что с тем же успехом можно было использовать Algol-like. Первая реализвция, AFAIK, для Явы (а лисперы относились к AOP с пренебрежением). Это точно сначала было реализовано в CL?

не знаю смолтока, но та же рефлексия сильно смахивает на лисповский mop.

Речь шла о «новых и свежих» идеях, а MOP уже 25 лет.

tailgunner ★★★★★
()
Ответ на: комментарий от archimag

>> рассмотренный и отвергнутый при разработке Си++

Толсто. В комитете был всего один человек, который имел опыт сопровождения большого объёма код на CL и он сказал «не нужно».

Доо.

Из «A History of C++: 1979−1991»:

«During the design the most contentious issue turned out to be whether the exception handling mechanism should support termination semantics or resumption semantics; that is, whether it should be possible for an exception handler to require execution to resume from the point where the exception was thrown. The main resumption vs termination debate took place in the ANSI C++ committee. After a discussion that lasted for about a year, the exception handling proposal as presented in the ARM (that is, with termination semantics) was voted into C++ by an overwhelming majority. The key to that consensus was presentations of experience data based on decades of use of systems that supported both resumption and termination semantics by representatives of DEC, Sun, Texas Instruments, IBM, and others. Basically, every use of resumption had represented a failure to keep separate levels of abstraction disjoint».

«discussion that lasted for about a year»

«experience data based on decades of use of systems that supported both resumption and termination semantics by representatives of DEC, Sun, Texas Instruments, IBM, and others».

P.S. по семантике ON в PL/I - консенсус, я так понимаю? %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Это точно сначала было реализовано в CL?

Вообще автор жаловался на буквально следующее: когда он рассказывал об аспектном программировании на конференции Java-разработчиков, то после завершения доклада зал аплодировал ему стоя, но вот аналогичный доклад на конференции CL-разработчиков породил только кислые физиономии и явное непонимание зачем это надо. Так что роль CL в этом чисто случайная, не вытекающая из какой-либо логики развития CL, а обусловленная личностью конкретного человека.

archimag ★★★
()
Ответ на: комментарий от archimag

> доклад на конференции CL-разработчиков породил только кислые физиономии и явное непонимание зачем это надо

Вот-вот, я тоже об этом читал. Так что AOP можно вычеркнуть из списка «взято из CL».

tailgunner ★★★★★
()
Ответ на: комментарий от vertexua

Так внутри Linq это и есть ФП (функции высших порядков через которые протаскивается IEnumerable<T>) + оптимизация определённая + кодогенерация студии (Linq to SQL напр.) + сахар в C#.

Norgat ★★★★★
()
Ответ на: комментарий от JFreeM

ВНЕЗАПНО, пузон не процедурный язык, а мультипарадигменный. В нём есть и ООП, и функциональные средства к тому же (коих в жабе нету)

На питоне можно точно также классы клепать, как и на жабе, коли есть желание.

BattleCoder ★★★★★
()
Ответ на: комментарий от tailgunner

Угодай под «свежими и оригинальными» явно имел в виду те идеи, которые были обкатаны в лиспе ещё десятки лет назад, а теперь преподносятся как откровение свыше. За примерами далеко ходить не надо --- достаточно вспомнить лямбды в новом стандарте С++ и далёкие планы по реализации mop и продолжений в яве

anonymous
()
Ответ на: комментарий от vertexua

> Лисперам о корявом внешнем виде лучше молчать. Фактор субъективный. Согласны?

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.