На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (5) « Первая ... 2 3 [4] 5  все  ( Перейти к последнему сообщению )  
> Lisp vs C++ , померяемся?
    Цитата trainer @
    А что такое + x y? Это ж еще объяснить надо про инфиксную запись.
    Это не инфиксная запись, это S-выражение. :)

    На самом деле синтаксис Лиспа очень прост, но въехать в функциональное программирование людям, отягощенным опытом императивного программирования, очень тяжело. Сам от этого страдаю. :(
      Цитата Relan @
      Сам от этого страдаю. :(

      Я тоже, но многим математикам функциональное программирование будет намного роднее императивного.
        Цитата linuxfan @
        Я тоже, но многим математикам функциональное программирование будет намного роднее императивного.
        Угу. :yes: Что вполне естественно. В императивном программировании очень извратили понятие переменной.

        Сейчас читаю литературу по Хаскелю. Прикольный язык. Одного не понимаю: почему монадические операции считаются чистыми? haskell.ru мне этого не прояснил. Буду признателен, если кто-нибудь растолкует на пальцах.
          Цитата Relan @
          Это не инфиксная запись, это S-выражение
          Ну да, что-то меня переклинило, это префиксная запись :D
          Инфиксная - это традиционная математическая :D
            Цитата trainer @
            Ну да, что-то меня переклинило, это префиксная запись
            Инфиксная - это традиционная математическая
            Поверь мне на слово, это и не префиксная запись тоже. :) Это S-выражение.
              http://www.intuit.ru/department/pl/plintro/3/
              Цитата
              Язык LISP для представления выражений использует префиксный тип записи, называемый кембриджской польской записью. Такая запись в отличие от польской записи содержит скобки, ограничивающие операнды, на которые действует операция. Таким образом, в кембриджской польской записи выражение представляет собой множество вложенных подвыражений, ограниченных скобками.

              Например:

              * (+ (z 2) +(x y))
              http://en.wikipedia.org/wiki/Lisp_programming_language
              Цитата
              Expressions are written as lists, using prefix notation.
              Кому верить? ;) :D
                в тему:
                Цитата

                -ты мальчик или девочка?
                -я ещё не определился.


                нифига Lisp не идеально читается, а
                + x y
                это вообще жесть. Как там это называется?.. Польская запись что ли?..
                Ну так это для приближения к машине, не нужно называть такие вещи "интуитивно понятными" и т.п.
                  Да ладно, не так ты читаешь: Lisp -- функциональный язык и на первом месте стоит вызов функции с именем '+' (можно даже ее адрес получить, если надо).
                  Все идеологически правильно и выдержано, не то что в це-крест-крест: это функция, а вот это оператор, а вот это вообще метод, а вот тут dynamic_cast мы придумали, но старайтесь избегать его использования, а вот ту у нас контейнеры, но не для всех существуют определенные методы и пр. Про «читаемость» STL headers -- отдельная песня. А уж какие ошибки компилер временами пишет... Жесть!
                  То ли дело Lisp. Рассказывают, что даже дебажили Lisp'овую программу управления спутником с Земли... удаленно дебажили, при этом в процессе отладки ничего не пострадало и не остановилсь. Вот это, я понимаю, модульность.

                  Добавлено
                  А «не определился» больше для C++ подходит: и не импиративный, да и до объектного еще вроде как не дорос. Нечто аморфно-неопределенное.
                    Цитата BugHunter @
                    нифига Lisp не идеально читается, а
                    + x y
                    это вообще жесть. Как там это называется?.. Польская запись что ли?..
                    Ну так это для приближения к машине, не нужно называть такие вещи "интуитивно понятными" и т.п.

                    Ничо, мне после МК-52 и не такое понятно...
                      Цитата
                      Ничо, мне после МК-52 и не такое понятно...

                      Да уж, машинка была жестяная. Мне по счастью в руки попал сразу буржуйский "Гражданин", повёрнутый к пользователю своим фейсом, а не другими частями тела :)

                      Цитата
                      Рассказывают, что даже дебажили Lisp'овую программу управления спутником с Земли... удаленно дебажили, при этом в процессе отладки ничего не пострадало и не остановилсь. Вот это, я понимаю, модульность.

                      И что?.. Не пострадало и не остановилось - я тоже так могу :yes: Правда, перекомпилять потом придётся, но это мелочи жизни.
                      А вообще мне даже дебажить чаще всего не нужно. Я и так знаю, как у меня что работает. Мне даже тесты в 99% случаев не нужны. Поведение программы понятно из одного только прочтения её кода :yes:
                      В динамических языках, я так подозреваю, это совсем не так. Я прав?

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

                      Жгучее желание использовать dynamic_cast - на лицо явная ошибка проектирования. Остановить и перепиши код.
                      Для всех операторов так же есть рекомендованная семантика (должен ли быть методом или отдельной функцией и т.д.), здесь я проблем не вижу.

                      Цитата
                      а вот ту у нас контейнеры, но не для всех существуют определенные методы и пр. Про «читаемость» STL headers -- отдельная песня. А уж какие ошибки компилер временами пишет... Жесть!

                      А я и не включал STL или boost в число удобных библиотек.
                      Сообщение отредактировано: BugHunter -
                        Цитата BugHunter @
                        Поведение программы понятно из одного только прочтения её кода :yes:

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

                        В динамических все, как правило, намного легче. Там более азвитые средства для обнаружения ошибок.
                        Цитата BugHunter @
                        А я и не включал STL или boost в число удобных библиотек.

                        STL -- уже часть стандарта C++, ходят слухи, что значительная часть boost попадет в новый стандарт C++. «Ежики плакали, кололись, но продолжали есть кактус» ©
                          Цитата
                          Или ты гений и провидец, или программа не сложнее «hello world». Поведение большинства современных программ очень трудно предсказать, т. к. они многоточные и довольно запутанные.

                          Ну, многопотоковость - это ещё один жупел (так же как и кроссплатформенность).
                          К счастью, её у меня нет. Ни к чему она мне. Не, я не гений (к счастью). И не провидец (тоже к счастью). Просто, догадливый.

                          Цитата
                          Там более азвитые средства для обнаружения ошибок.

                          1) Что значит развитые средства? Отладчика уже недостаточно?
                          2) Что такое умеет отладчик lisp-а, что не умеет отладчик MSVC++ или DDD?
                          3) assert( a != 0 && a < 200 ); По моему всё понятно и довольно тупо, ошибиться невозможно. 99,9% случаев пользователь нарывается на такой ассерт, программа не падает и продолжает работать дальше. (ну, есть ещё 0.1%, когда ассерт поставить я забыл или ещё чего то не предусмотрел)
                          Прочитав в рекламации "что делали" и "какой ассерт получили" сразу же получаем сценарий неправильного поведения и условие, которому перестал удовлетворять наш a. Имя файла и номер строки, где предположительно дело пошло не так, как надо. Открою маленький секрет - чаще всего мне даже не приходится повторять ошибку руками, т.к. по ассерту и так всё ясно.

                          В LISP-е удобнее? Правда что ли?

                          Цитата
                          STL -- уже часть стандарта C++, ходят слухи, что значительная часть boost попадет в новый стандарт C++.

                          В Стандарт попадает много всякого разного, в т.ч. сомнительной полезности. Это не значит, что мы обязаны использовать ВЕСЬ язык (или всё таки обязаны?).
                          Сообщение отредактировано: BugHunter -
                            Цитата BugHunter @
                            2) Что такое умеет отладчик lisp-а, что не умеет отладчик MSVC++ или DDD?

                            Он умеет одну простую вещь: в силу динамической природы языка можно подменять функции прямо в runtime :) Если бы ПО спутника написали на C++, то при исправлении ошибок его бы пришлось перезапускать.
                            Цитата BugHunter @
                            В LISP-е удобнее? Правда что ли?

                            Пока не сталкивался, но я как минимум не вижу, почему не могут быть реализованы подобного рода assert'ы и в Lisp'е. Там все очень продумано. Почитай ради любопытства «Practical Common Lisp» после третьей главы мне захотелось прочитать все остальное :) Очень уж элегантен Lisp-way.

                            Добавлено
                            Цитата BugHunter @
                            В Стандарт попадает много всякого разного, в т.ч. сомнительной полезности.

                            Тем не менее, если STL -- часть стандарта, то => STL -- часть языка.
                              Цитата trainer @
                              Язык LISP для представления выражений использует префиксный тип записи, называемый кембриджской польской записью. Такая запись в отличие от польской записи содержит скобки, ограничивающие операнды, на которые действует операция. Таким образом, в кембриджской польской записи выражение представляет собой множество вложенных подвыражений, ограниченных скобками.
                              Называть это префиксной записью -- это слишком упрощенно. Наверное в том тексте посчитали такое упрощение допустимым. На самом деле всё несколько сложнее, по этому поводу см. любой учебник по Лиспу, где разбирается математический аппарат, лежащий в основе языка. Правильнее думать о выражениях Лиспа как о списках, каковыми они собственно и являются. Ну и еще необходимо упомянуть про QUOTE.
                                Цитата
                                в силу динамической природы языка можно подменять функции прямо в runtime :)

                                Ну, в C++ тоже можно подменить функцию, подменив адрес. Возникает законный вопрос - зачем?.. Может я не настолько извращенец, что бы думать об этом?..

                                Цитата
                                Пока не сталкивался, но я как минимум не вижу, почему не могут быть реализованы подобного рода assert'ы и в Lisp'е.

                                так они ещё не реализованы? какой отсталый язык (качает головой)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0438 ]   [ 15 queries used ]   [ Generated: 27.04.24, 09:01 GMT ]