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

    Ну и зачем добавлять новые возможности для ошибок то??
    С синтаксисом форта вообще можно суперецких ошибок наделать, ибо он неинтуитивен.. так что про == не надо тут.
    вот на PHP еще и === есть ;)
      Цитата wormball @
      нельзя ли, программируя на шаблонах, записать это покороче.

      Можно, например, вот так:
      ExpandedWrap disabled
        template<int D, int N> struct RomanDigitInfoGen
        {
            static const int m_Next = N;
            static const int m_SIdx = RomanDigitInfo<N>::m_SIdx + 1;
        };
         
        template<> struct RomanDigitInfoGen<1, 0> {static const int m_Next = 0; static const int m_SIdx = 0;};
         
        template<> struct RomanDigitInfo<1> : public RomanDigitInfoGen<1, 0> {;};
        template<> struct RomanDigitInfo<4> : public RomanDigitInfoGen<4, 1> {;};
        template<> struct RomanDigitInfo<5> : public RomanDigitInfoGen<5, 4> {;};
        template<> struct RomanDigitInfo<9> : public RomanDigitInfoGen<9, 5> {;};
        template<> struct RomanDigitInfo<10> : public RomanDigitInfoGen<10, 9> {;};
        template<> struct RomanDigitInfo<40> : public RomanDigitInfoGen<40, 10> {;};
        template<> struct RomanDigitInfo<50> : public RomanDigitInfoGen<50, 40> {;};
        template<> struct RomanDigitInfo<90> : public RomanDigitInfoGen<90, 50> {;};
        template<> struct RomanDigitInfo<99> : public RomanDigitInfoGen<99, 90> {;};
        template<> struct RomanDigitInfo<100> : public RomanDigitInfoGen<100, 99> {;};
        template<> struct RomanDigitInfo<400> : public RomanDigitInfoGen<400, 100> {;};
        template<> struct RomanDigitInfo<500> : public RomanDigitInfoGen<500, 400> {;};
        template<> struct RomanDigitInfo<900> : public RomanDigitInfoGen<900, 500> {;};
        template<> struct RomanDigitInfo<999> : public RomanDigitInfoGen<999, 900> {;};
        template<> struct RomanDigitInfo<1000> : public RomanDigitInfoGen<100, 999> {;};

      Несколько покороче. Но что и с чем в этом списке связано - ты все равно должен указать.
        Цитата LuckLess @
        С синтаксисом форта вообще можно суперецких ошибок наделать, ибо он неинтуитивен..

        А С++ интуитивен? Недаром по нему килограммовые учебники пишут! Учебник по Форту, кстати, меньше по объёму раз в 5. Единственная интуитивная вещь в С++ - формулы, да и то потому, что мы все 10 лет проходили математику в школе. А в целом выучить Форт ничуть не сложнее, чем С++, я бы даже сказал, проще.

        Цитата Flex Ferrum @
        Можно, например, вот так:

        Ну, а нельзя это, скажем, в две или три строчки уместить, без повторов? У меня, скажем, не было массива строк, я вместо него написал следующее:

        ExpandedWrap disabled
          : digits s" I" s" IV" s" V" s" IX" s" X" s" XL" s" L" s" XC" s" C" s" CD" s" D" s" CM" s" M" ;
          : digit ( n -- a n ) >r digits 12 r@ -  for 2drop next r> -rot >r >r for 2drop next r> r> ;

        Первая функция выдаёт все строки с римскими цифрами, а вторая просто выбрасывает все строки, кроме строки с определённым номером. Если заморачиваться с быстродействием, тогда, наверное, будет три строчки. А числа у меня вообще в виде массива. Можно ли на шаблонах объявить массив?
          Цитата wormball @
          А С++ интуитивен? Недаром по нему килограммовые учебники пишут!

          :D :D
          C++ да - интуитивен, любой более менее так себе программист может прочитать не слишком навороченный код.
          Причем не РАЗБИРАТЬСЯ, а прочитать.
          Килобайтовые учебники пишут не потому, что он сложен, а потому, что он популярен, и эти учебники много кому интересно прочитать.
            Цитата wormball @
            Ну, а нельзя это, скажем, в две или три строчки уместить, без повторов?

            А там как таковых повторов нет. Если не считать повторами определенные лексическо-синтаксические конструкции.
              Цитата wormball @
              Ну, а нельзя это, скажем, в две или три строчки уместить, без повторов? У меня, скажем, не было массива строк, я вместо него написал следующее:

              Можно написать макросы, и будет очень коротко, только вот никакой нормальный С++ программист так делать не будет.
                Цитата LuckLess @
                любой более менее так себе программист может прочитать не слишком навороченный код. Причем не РАЗБИРАТЬСЯ, а прочитать.

                Может быть, я плохой программист, только не встречал я на С++ "не слишком навороченного кода", который бы я мог понять с первого раза. Даже в учебниках примеры зачастую занимают две и больше страниц. На Форте из опыта чтения чужих исходников у меня было только основательное переделывание исходников ретрофорта с целью оптимизации по быстродействию и повышения функциональности, причём делал я это параллельно с изучением Форта как такового. И это не вызвало у меня больших трудностей: когда функция занимает одну строчку, сколь бы она ни была неинтуитивна, она понимается менее чем за минуту. Причём действительно понимается: фактически более половины функций я собственноручно переписал.

                Цитата LuckLess @
                Килобайтовые учебники пишут не потому, что он сложен, а потому, что он популярен, и эти учебники много кому интересно прочитать.

                Видел я учебник по С++, сопоставимый по объёму с учебником по Форту. Прочитал я его и фактически ничего для себя не вынес.

                Цитата Flex Ferrum @
                Если не считать повторами определенные лексическо-синтаксические конструкции.

                Именно это я за повторы и считаю.

                Цитата LuckLess @
                Можно написать макросы, и будет очень коротко, только вот никакой нормальный С++ программист так делать не будет.

                Но почему?? Неужели мегабайтные исходники - это хорошо?
                  Цитата wormball @
                  Именно это я за повторы и считаю.

                  Ну ведь ты тоже должен определенное количество раз повторить конструкцию s" ...", где ... - это какая-то строка?
                    Цитата Flex Ferrum @
                    Ну ведь ты тоже должен определенное количество раз повторить конструкцию s" ...", где ... - это какая-то строка?

                    Ну да, но у меня одно слово, а у тебя - штук десять. Можно их до одного-двух сократить?
                      Цитата wormball @
                      Можно их до одного-двух сократить?

                      Можно. Макросом.
                        Ответ давно ясен всем.

                        Самый гибкий и фичастый — Lisp.
                        Самый энтерпрайзистый — Java.
                        Самый красноглазистый — Perl.
                        Самый красивый — Python.
                        Самый дешевый — PHP.
                        Самый системный — C. (Если бы не Lisp, был бы он по праву еще и самым универсальным.)
                        Самый эзотеричный — Brainfuck.

                        :)) Остальное, естественно, сами знаете, от кого.
                          Цитата Змей(Чёрный) @
                          идеальный язык, имхо - это объединение Бейсика, Си и Ассемблера...

                          объединение Бейсика, Си и Ассемблера
                          :yes: ;) :whistle:
                            Цитата Flex Ferrum @
                            Можно. Макросом.

                            Если не сложно, можешь изобразить?

                            Цитата Ho Im @
                            Ответ давно ясен всем.

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

                            Цитата root2lexS @
                            объединение Бейсика, Си и Ассемблера

                            По принципу "не буду учить английский, пусть иностранцы русский учат"?
                              Цитата wormball @

                              Если не сложно, можешь изобразить?

                              ExpandedWrap disabled
                                template<int D, int N> struct RomanDigitInfoGen
                                {
                                    static const int m_Next = N;
                                    static const int m_SIdx = RomanDigitInfo<N>::m_SIdx + 1;
                                };
                                 
                                template<> struct RomanDigitInfoGen<1, 0> {static const int m_Next = 0; static const int m_SIdx = 0;};
                                 
                                #define RI(a,b) template<> struct RomanDigitInfo<a> : public RomanDigitInfoGen<a, b> {;};
                                 
                                RI(1,0)
                                RI(4,1)
                                RI(5,4)
                                RI(9,5)
                                RI(40,10)
                                RI(50,40)
                                RI(90,50)
                                RI(99,90)
                                RI(100,99)
                                RI(400,100)
                                RI(500,400)
                                RI(900,500)
                                RI(999,900)
                                RI(100,999)
                                 
                                #undef RI
                                Позвольте вставить и мне свои 2 копейки, коллеги.
                                На мой взгляд, корректнее было бы обсуждать не идеальный язык, а идеальную среду программирования (ИСП). В качестве претендента на ИСП (для более узкого круга задач, а именно - программирование микроконтроллеров) предлагаю рассмотреть Algorithm Builder
                                Может показаться что это слишком частный случай и такого рода решения не возможны для систем общего назначения. Маленький исторический экскурс: еще в доперестроечные времена в институте кибернетики в Киеве была разработана "похожая" система, без привязки к конкретной платформе и языку программирования. Называлось это - Р-технология.


                                Теперь копейка номер 2 - о форте:
                                Почти каждый фортер в начале своего познания Языка пробует сделать Свой Форт.
                                Почему? - Это действительно очень просто!

                                Что в этом хорошего?
                                1. Форт _действительно_ простой язык, и для изучения и для реализации.
                                2. Форт _действительно_ очень мощный язык - большинство пишет свой форт на форте же, хотя встречаются и извращенцы :)
                                3. Большинство пишущих успевает понять что "просто еще один форт" это хуже чем "один из фортов, поддерживающий стандарт/имеющий достаточное число библиотек + свои расширения", благо одно из основных его свойств - расширяемость!

                                Что в этом плохого? - усилия таки распыляются и некоторое число несовместимых вариантов "вроде бы форта" появляется (лучше бы пара новых библиотек).

                                Вобщем некая "детская болезнь".

                                2wormball:
                                Хотелось бы увидеть у Вас в результате не очередной клон форта, а именно новую _удобную_ среду программирования, пусть даже она будет поддерживать только форт (для начала :)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (31) « Первая ... 4 5 [6] 7 8 ...  30 31


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0502 ]   [ 14 queries used ]   [ Generated: 18.07.25, 10:13 GMT ]