Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.131.168] |
|
Страницы: (5) « Первая ... 2 3 [4] 5 все ( Перейти к последнему сообщению ) |
Сообщ.
#46
,
|
|
|
Это не инфиксная запись, это S-выражение.
На самом деле синтаксис Лиспа очень прост, но въехать в функциональное программирование людям, отягощенным опытом императивного программирования, очень тяжело. Сам от этого страдаю. |
Сообщ.
#47
,
|
|
|
Цитата Relan @ Сам от этого страдаю. Я тоже, но многим математикам функциональное программирование будет намного роднее императивного. |
Сообщ.
#48
,
|
|
|
Цитата linuxfan @ Угу. Что вполне естественно. В императивном программировании очень извратили понятие переменной.Я тоже, но многим математикам функциональное программирование будет намного роднее императивного. Сейчас читаю литературу по Хаскелю. Прикольный язык. Одного не понимаю: почему монадические операции считаются чистыми? haskell.ru мне этого не прояснил. Буду признателен, если кто-нибудь растолкует на пальцах. |
Сообщ.
#49
,
|
|
|
Цитата Relan @ Ну да, что-то меня переклинило, это префиксная запись Это не инфиксная запись, это S-выражение Инфиксная - это традиционная математическая |
Сообщ.
#50
,
|
|
|
Цитата trainer @ Поверь мне на слово, это и не префиксная запись тоже. Это S-выражение. Ну да, что-то меня переклинило, это префиксная запись Инфиксная - это традиционная математическая |
Сообщ.
#51
,
|
|
|
http://www.intuit.ru/department/pl/plintro/3/
Цитата http://en.wikipedia.org/wiki/Lisp_programming_language Язык LISP для представления выражений использует префиксный тип записи, называемый кембриджской польской записью. Такая запись в отличие от польской записи содержит скобки, ограничивающие операнды, на которые действует операция. Таким образом, в кембриджской польской записи выражение представляет собой множество вложенных подвыражений, ограниченных скобками. Например: * (+ (z 2) +(x y)) Цитата Кому верить? Expressions are written as lists, using prefix notation. |
Сообщ.
#52
,
|
|
|
в тему:
Цитата -ты мальчик или девочка? -я ещё не определился. нифига Lisp не идеально читается, а + x y это вообще жесть. Как там это называется?.. Польская запись что ли?.. Ну так это для приближения к машине, не нужно называть такие вещи "интуитивно понятными" и т.п. |
Сообщ.
#53
,
|
|
|
Да ладно, не так ты читаешь: Lisp -- функциональный язык и на первом месте стоит вызов функции с именем '+' (можно даже ее адрес получить, если надо).
Все идеологически правильно и выдержано, не то что в це-крест-крест: это функция, а вот это оператор, а вот это вообще метод, а вот тут dynamic_cast мы придумали, но старайтесь избегать его использования, а вот ту у нас контейнеры, но не для всех существуют определенные методы и пр. Про «читаемость» STL headers -- отдельная песня. А уж какие ошибки компилер временами пишет... Жесть! То ли дело Lisp. Рассказывают, что даже дебажили Lisp'овую программу управления спутником с Земли... удаленно дебажили, при этом в процессе отладки ничего не пострадало и не остановилсь. Вот это, я понимаю, модульность. Добавлено А «не определился» больше для C++ подходит: и не импиративный, да и до объектного еще вроде как не дорос. Нечто аморфно-неопределенное. |
Сообщ.
#54
,
|
|
|
Цитата BugHunter @ нифига Lisp не идеально читается, а + x y это вообще жесть. Как там это называется?.. Польская запись что ли?.. Ну так это для приближения к машине, не нужно называть такие вещи "интуитивно понятными" и т.п. Ничо, мне после МК-52 и не такое понятно... |
Сообщ.
#55
,
|
|
|
Цитата Ничо, мне после МК-52 и не такое понятно... Да уж, машинка была жестяная. Мне по счастью в руки попал сразу буржуйский "Гражданин", повёрнутый к пользователю своим фейсом, а не другими частями тела Цитата Рассказывают, что даже дебажили Lisp'овую программу управления спутником с Земли... удаленно дебажили, при этом в процессе отладки ничего не пострадало и не остановилсь. Вот это, я понимаю, модульность. И что?.. Не пострадало и не остановилось - я тоже так могу Правда, перекомпилять потом придётся, но это мелочи жизни. А вообще мне даже дебажить чаще всего не нужно. Я и так знаю, как у меня что работает. Мне даже тесты в 99% случаев не нужны. Поведение программы понятно из одного только прочтения её кода В динамических языках, я так подозреваю, это совсем не так. Я прав? Цитата Все идеологически правильно и выдержано, не то что в це-крест-крест: это функция, а вот это оператор, а вот это вообще метод, а вот тут dynamic_cast мы придумали, но старайтесь избегать его использования, Жгучее желание использовать dynamic_cast - на лицо явная ошибка проектирования. Остановить и перепиши код. Для всех операторов так же есть рекомендованная семантика (должен ли быть методом или отдельной функцией и т.д.), здесь я проблем не вижу. Цитата а вот ту у нас контейнеры, но не для всех существуют определенные методы и пр. Про «читаемость» STL headers -- отдельная песня. А уж какие ошибки компилер временами пишет... Жесть! А я и не включал STL или boost в число удобных библиотек. |
Сообщ.
#56
,
|
|
|
Цитата BugHunter @ Поведение программы понятно из одного только прочтения её кода Или ты гений и провидец, или программа не сложнее «hello world». Поведение большинства современных программ очень трудно предсказать, т. к. они многоточные и довольно запутанные. Цитата BugHunter @ В динамических языках, я так подозреваю, это совсем не так. В динамических все, как правило, намного легче. Там более азвитые средства для обнаружения ошибок. Цитата BugHunter @ А я и не включал STL или boost в число удобных библиотек. STL -- уже часть стандарта C++, ходят слухи, что значительная часть boost попадет в новый стандарт C++. «Ежики плакали, кололись, но продолжали есть кактус» © |
Сообщ.
#57
,
|
|
|
Цитата Или ты гений и провидец, или программа не сложнее «hello world». Поведение большинства современных программ очень трудно предсказать, т. к. они многоточные и довольно запутанные. Ну, многопотоковость - это ещё один жупел (так же как и кроссплатформенность). К счастью, её у меня нет. Ни к чему она мне. Не, я не гений (к счастью). И не провидец (тоже к счастью). Просто, догадливый. Цитата Там более азвитые средства для обнаружения ошибок. 1) Что значит развитые средства? Отладчика уже недостаточно? 2) Что такое умеет отладчик lisp-а, что не умеет отладчик MSVC++ или DDD? 3) assert( a != 0 && a < 200 ); По моему всё понятно и довольно тупо, ошибиться невозможно. 99,9% случаев пользователь нарывается на такой ассерт, программа не падает и продолжает работать дальше. (ну, есть ещё 0.1%, когда ассерт поставить я забыл или ещё чего то не предусмотрел) Прочитав в рекламации "что делали" и "какой ассерт получили" сразу же получаем сценарий неправильного поведения и условие, которому перестал удовлетворять наш a. Имя файла и номер строки, где предположительно дело пошло не так, как надо. Открою маленький секрет - чаще всего мне даже не приходится повторять ошибку руками, т.к. по ассерту и так всё ясно. В LISP-е удобнее? Правда что ли? Цитата STL -- уже часть стандарта C++, ходят слухи, что значительная часть boost попадет в новый стандарт C++. В Стандарт попадает много всякого разного, в т.ч. сомнительной полезности. Это не значит, что мы обязаны использовать ВЕСЬ язык (или всё таки обязаны?). |
Сообщ.
#58
,
|
|
|
Цитата BugHunter @ 2) Что такое умеет отладчик lisp-а, что не умеет отладчик MSVC++ или DDD? Он умеет одну простую вещь: в силу динамической природы языка можно подменять функции прямо в runtime Если бы ПО спутника написали на C++, то при исправлении ошибок его бы пришлось перезапускать. Цитата BugHunter @ В LISP-е удобнее? Правда что ли? Пока не сталкивался, но я как минимум не вижу, почему не могут быть реализованы подобного рода assert'ы и в Lisp'е. Там все очень продумано. Почитай ради любопытства «Practical Common Lisp» после третьей главы мне захотелось прочитать все остальное Очень уж элегантен Lisp-way. Добавлено Цитата BugHunter @ В Стандарт попадает много всякого разного, в т.ч. сомнительной полезности. Тем не менее, если STL -- часть стандарта, то => STL -- часть языка. |
Сообщ.
#59
,
|
|
|
Цитата trainer @ Называть это префиксной записью -- это слишком упрощенно. Наверное в том тексте посчитали такое упрощение допустимым. На самом деле всё несколько сложнее, по этому поводу см. любой учебник по Лиспу, где разбирается математический аппарат, лежащий в основе языка. Правильнее думать о выражениях Лиспа как о списках, каковыми они собственно и являются. Ну и еще необходимо упомянуть про QUOTE. Язык LISP для представления выражений использует префиксный тип записи, называемый кембриджской польской записью. Такая запись в отличие от польской записи содержит скобки, ограничивающие операнды, на которые действует операция. Таким образом, в кембриджской польской записи выражение представляет собой множество вложенных подвыражений, ограниченных скобками. |
Сообщ.
#60
,
|
|
|
Цитата в силу динамической природы языка можно подменять функции прямо в runtime Ну, в C++ тоже можно подменить функцию, подменив адрес. Возникает законный вопрос - зачем?.. Может я не настолько извращенец, что бы думать об этом?.. Цитата Пока не сталкивался, но я как минимум не вижу, почему не могут быть реализованы подобного рода assert'ы и в Lisp'е. так они ещё не реализованы? какой отсталый язык (качает головой) |