На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (31) [1] 2 3 ...  30 31  ( Перейти к последнему сообщению )  
> идеальный язык программирования , каким он должен быть?
    Вот, решил я тут написать идеальный язык программирования. Да, я знаю, что такого не бывает, но душа, как говорится, просит. Из всех языков, которые я за свою жизнь встречал, в наибольшей степени на роль идеального подходит язык Форт. Я уже долго хочу написать статью, в которой бы излагались все его преимущества, а пока что могу посоветовать хорошую статью с сайта forth.org.ru.

    Существующие реализации Форта мне не нравятся, потому, собственно, я и затеял этот проект. А вот, собственно, и он: http://www.sources.ru/wiki/doku.php?id=projects:quickforth .

    Меня интересует мнение, так сказать, практикующих программистов: что вам не хватает в существующих языках программирования и как, по вашему мнению, должен выглядеть идеальный язык?
      Если этот язык будет выглядеть так:
      ExpandedWrap disabled
        macro
        : nip $04c683 3, ; | add esi, 4
        | : dup $fc4689 3, $04ee83 3, ; | mov [esi-4], eax; sub esi, 4
        : dup $04ee83 3, $0689 2, ; | sub esi, 4; mov [esi], eax
        : drop $068b 2, m: nip ; |  mov eax, [esi]; nip
        | : drop $068b 2, $04768d 3, ; | mov eax, [esi]; lea esi, [esi+4] - slow!

      то я лучше пойду курить асм до полного просветления :)

      Добавлено
      но мне это чертовски тот же асм напоминает :blink: ... можно пример твоего языка? :ph34r:
        Цитата wormball @
        Да, я знаю, что такого не бывает
        Угу. Идеальных языков не было, нет и никогда не будет. Впрочем, никто не мешает заняться поисками философского камня. Найти его, конечно, не удастся, зато узнаешь много нового. :) Да и потом, язык -- ничто. Библиотеки -- всё.

        Цитата wormball @
        как, по вашему мнению, должен выглядеть идеальный язык?
        Думаю, для прикладных целей -- это чистый функциональный язык, типа Haskell (хочу заняться его изучением в ближайшее время). Lisp тоже хорош, не смотря на скобки. FP довольно забавная штучка с его комбинирующими формами.
          Структурированный ASM с нормального вида циклами, условиями :lol:
            Идеальность языка -- для меня это его универсальнось. Сделать эо не возможно по определению, т.к. задачи бывают совершенно разные. Даже в одном случае нужен функциональный язык, в другом -- императивный. Можно, конечно, всё зафигачить в один, но это всё равно что иметь у себя на даче инструмент, к. может быть и молотком, и лопатой, и топором...
              Идеальный язык программирования - Русский матерный :lool:
                Цитата
                Идеальный язык программирования - Русский матерный :lool:

                На самом деле, идеальным яп м.б. только для узкого класса задач
                  идеальный язык, имхо - это объединение Бейсика, Си и Ассемблера...

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

                  Если вкратце - то идеальный язык должен быть эшелонирован.
                  типа, хочу - напишу msgbox 'hello world'... хочу больше контроля за этим процессом - буду юзать апишный вызов с доп.параметрами...
                    Выгрузил таки апрельскую версию. Скоро, наверное, начну активно дописывать.

                    Цитата BlackRabbit @
                    Структурированный ASM с нормального вида циклами, условиями

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

                    Цитата Monty @
                    macro
                    : nip $04c683 3, ; | add esi, 4
                    | : dup $fc4689 3, $04ee83 3, ; | mov [esi-4], eax; sub esi, 4
                    : dup $04ee83 3, $0689 2, ; | sub esi, 4; mov [esi], eax
                    : drop $068b 2, m: nip ; | mov eax, [esi]; nip
                    | : drop $068b 2, $04768d 3, ; | mov eax, [esi]; lea esi, [esi+4] - slow!

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

                    ExpandedWrap disabled
                      | roman numbers
                       
                      create ones 'I 1, 'X 1, 'C 1, 'M 1,
                      create fives 'V 1, 'L 1, 'D 1,
                      var rank
                       
                      : typeone ones rank @ + c@ emit ;
                      : typefive fives rank @ + c@ emit ;
                      : typeten ones rank @ + 1+ c@ emit ;
                      : typeones for typeone next ;
                      : typefives ( n -- ) dup if 1 = if typefive else typeten then else drop then ;
                       
                      : typedigit ( div mod -- ) dup <0 if typeone drop typefives else swap typefives typeones then ;
                      : digit ( n -- ) 5 /mod swap dup 4 = if drop 1 + -1 then typedigit ;
                      : incrank 1 rank +! ;
                      : decrank rank @ if 1 rank -! then ;
                      : roman ( n -- ) 10 /mod dup if incrank roman decrank else drop then digit ;
                      : toroman 0 rank ! roman space ;

                    На самом деле ничего страшного, просто непривычно. Зато одно из главных преимуществ Форта - то, что он фактически принуждает к хорошему стилю программирования. Недостаток - нельзя писать выражения со скобками вроде (a+b)*c, но после некоторой тренировки это перестаёт быть препятствием. К тому же, если приспичит, можно и поддержку формул реализовать.

                    Цитата n0rd @
                    Идеальный язык программирования - это тот, в котором ты описываешь задачу, а компилятор тебе ее сам решает.

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

                    Цитата Relan @
                    Думаю, для прикладных целей -- это чистый функциональный язык, типа Haskell (хочу заняться его изучением в ближайшее время). Lisp тоже хорош, не смотря на скобки. FP довольно забавная штучка с его комбинирующими формами.

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

                    Цитата Змей(Чёрный) @
                    Меня лично в Сях раздражает, что для простой задачи необходимо жёстко описывать кучу вспомогательных действий... А писать что-то большое на асме - это вообще труба...

                    Тогда Форт - для тебя. Программы на Форте в среднем в 2-6 раз (а то и больше) короче, чем аналогичные программы на традиционных языках.

                    Цитата Relan @
                    Да и потом, язык -- ничто. Библиотеки -- всё.

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

                    Цитата Cr@$h @
                    Даже в одном случае нужен функциональный язык, в другом -- императивный.

                    Можно пример?
                      Мне тоже форт нравится. Правдо я про него только читал и в глаза не видел.
                      Хочу язык программирования типа Си или Паскаль, асм вставки обязательны. не идеалестические а практические реализации. Но чтобы макросы были такие, чтобы на них можно было сделать все и втоже время они не должны быть тяжелыми. И еще должна быть большая библеотека макросов, которая реализовывала все возможные вареанты написания тепичных процедур. В конце концов такой язык должен свестись к тому, что ты пишешь, что хочешь получить, а компилятор сам строит программу. И чем меньше будет описание тем ближе такой компилятор будет похож на Искуственный Интелект.
                        Цитата Pavia @
                        Мне тоже форт нравится. Правдо я про него только читал и в глаза не видел.

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

                        Цитата Pavia @
                        Но чтобы макросы были такие, чтобы на них можно было сделать все и втоже время они не должны быть тяжелыми.

                        В Форте используются не макросы, а немного другая технология, но на её основе можно сделать всё и даже больше.
                          Цитата wormball @
                          Сколько ни читал про функциональные языки, понял только одно - писать в функциональном стиле можно и на императивных языках.
                          Это не возможно по определению. :) Если язык позволяет программировать в чисто функциональном стиле, то он называется функциональным ЯП (возможно с императивными элементами).
                          Цитата wormball @
                          Может быть, в функциональных языках есть что-то, чего я про них не знаю?
                          Может быть. Когда нам читали курс декларативного прораммирования -- я им абсолютно не проникся. Но сейчас я серьезно изучаю его и многое проясняется. Аппликативная вычислительная модель математически совершенна и очень красива. :) Ее надо просто понять.
                          Цитата
                          Функциональное программирование прекрасно, оно -- радость созерцания. Как только кто-то поймет функциональное программирование, он немедленно перейдет к нему. Массы, которые застряли в устаревшем императивном и объектно-ориентированном программировании, делают это из слепого предубеждения. Они просто не понимают.
                          Вот она, основная проблема декларативного программирования -- "они не понимают". :(
                          Цитата Pavia @
                          Но чтобы макросы были такие, чтобы на них можно было сделать все и втоже время они не должны быть тяжелыми.
                          Макросы в Лиспе -- очень мощная вещь.
                          Цитата Pavia @
                          В конце концов такой язык должен свестись к тому, что ты пишешь, что хочешь получить, а компилятор сам строит программу.
                          Собственно, это и есть то, чем занимается декларативное программирование. Программа говорит "что делать" вместо "как делать".

                          Например, так вычисляется гипотенуза по т. Пифагора на FP:
                          ExpandedWrap disabled
                            def pifagor = sqrt . + . @ sqr
                          Гипотенуза -- это корень из суммы квадратов катетов. Именно так и читается эта функция. На императивном языке это было бы что-то типа sqrt(sqr(a) + sqr(b)). Видите разницу? Или вот еще:
                          ExpandedWrap disabled
                            def simple = and . @ % . distl . <id, tl . iota . dec . id>
                          Эта функция проверяет, является ли число простым. (Это проверка по определению.) На С пришлось бы написать что-то типа (не пинайте за алгоритм, это лишь пример)
                          ExpandedWrap disabled
                            int simple(int n) {
                                int i;
                                for (i = 3; i < n; i++)
                                    if (n % i) return 0;
                                return 1;
                            }
                          Чувствуете разницу? На FP мы сказали "что делать" (т. е. просто сформулировали задачу), а на С -- "как делать" (расписали по шагам).

                          Цитата Pavia @
                          И чем меньше будет описание тем ближе такой компилятор будет похож на Искуственный Интелект.
                          Это уже из области фантастики. :) Я бы не рискнул писать на языке, транслятор которого пытается угадать, что я там имел в виду.
                            Relan, а это уже интереснее ... когда дают сравнение :)

                            ps. я именно сравнение и хотел :)
                              Цитата Relan @
                              Например, так вычисляется гипотенуза по т. Пифагора на FP:
                              def pifagor = sqrt . + . @ sqr

                              Кстати, на Форте это будет выглядеть так:
                              ExpandedWrap disabled
                                : pifagor fsqr fswap fsqr f+ sqrt ;

                              , а на ФП я не очень понял запись. Что в интернете можно почитать про функциональное и декларативное программирование?

                              Цитата Relan @
                              Функциональное программирование прекрасно, оно -- радость созерцания. Как только кто-то поймет функциональное программирование, он немедленно перейдет к нему. Массы, которые застряли в устаревшем императивном и объектно-ориентированном программировании, делают это из слепого предубеждения. Они просто не понимают.
                              Вот она, основная проблема декларативного программирования -- "они не понимают".

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

                              Кстати, если кто-то ещё не понял. Я не являюсь фанатичным поклонником Форта и затеял этот разговор не с целью заставить всех перейти на Форт, а именно выяснить, каким должен быть идеальный язык и какие языки больше всего претендуют на это звание. Просто пока я конкурентов Форту не вижу. Возможно, когда я прочитаю про функциональное/декларативное программирование, я изменю своё мнение, хотя это маловероятно.
                                wormball
                                Напиши программу на форте которая прочитает текстовый файл "text1.txt", создаст "text2.txt" и запишет в него все слова но задом наперед.
                                т.е. text1.txt содержит "asd dsa" к примеру -- выход "dsa asd" в text2.txt .. ты говоришь просто что на форте все записи короче выходят... вот сравнимс..

                                Добавлено
                                Цитата wormball @
                                каким должен быть идеальный язык и какие языки больше всего претендуют на это звание.

                                1) Хорошая стандартная библиотека
                                2) Понятный короткий синтаксис
                                3) Возможности обобщенного программирования
                                4) Возможность АСМ вставок.

                                Чем форт лучше С++?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (31) [1] 2 3 ...  30 31


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0471 ]   [ 15 queries used ]   [ Generated: 9.05.24, 11:27 GMT ]