На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (31) « Первая ... 2 3 [4] 5 6 ...  30 31  ( Перейти к последнему сообщению )  
> идеальный язык программирования , каким он должен быть?
    Да, видимо еще одно добавление про вывод собственного текста. Я сомневаюсь, что это можно сделать одной строкой (ну не вгоняя весь текст в одну строку типа :
    ExpandedWrap disabled
       int i = 0; for (int j = 0; j < 10; j++); std::cout << "hello"; CRgn A;
    , etc).

    Добавлено
    Цитата mo3r @
    Интерпретатор лиспа, написанный на лиспе, занимает около 15 строчек.

    Круто! Это я и хотел узнать.

    Цитата mo3r @
    Не понял, почему нету смысла?

    Не имеет смысла с теоретической точки зрения, и именно потому, что
    Цитата mo3r @
    Они как раз так и пишутся.
    .

    mo3r
    Извини, я не понял, а что такое "рефлексия"?
      Цитата Narsil @
      Извини, я не понял, а что такое "рефлексия"?

      Возможность из программы узнавать/менять информацию о программе, типах данных и т.д.
      В частности, возможность получить код программы.
        Не отвлекаемся от темы! 8-) У кого-нибудь будут ещё соображения по поводу идеального языка?
          wormball
          я б решил ту задачу както так.
          ExpandedWrap disabled
            int main(int, char*)
               {
               std::ifstream ifile("test1.txt");
               std::ofstream ofile("test2.txt");
               class revFunctor
                  {
                  public:
                     std::string operator()(std::string str_)
                        {
                        std::reverse (str_.begin(), str_.end());
                        return str_;
                        }
                  };
               std::transform (std::istream_iterator<std::string>(ifile), std::istream_iterator<std::string>(),
                     std::ostream_iterator<std::string>(ofile, " "), revFunctor());
               }

          но если гнатья за меньшим количеством символов, то можно так
          ExpandedWrap disabled
            using namespace std;
             
            string revFunction (string str_)
               {
               reverse (str_.begin(), str_.end());
               return str_;
               }
            int main(int, char*)
               {
               ifstream ifile("test1.txt");
               ofstream ofile("test2.txt");
               typedef istream_iterator<string> iIt;
               std::transform (iIt(ifile), iIt(),
                     ostream_iterator<string>(ofile, " "), revFunction);
               }

          или даже так
          ExpandedWrap disabled
            using namespace std;
             
             
            int main(int, char*)
               {
               ifstream ifile("test1.txt");
               ofstream ofile("test2.txt");
               string word;
               while (ifile>>word)
                  {
                  reverse (word.begin(), word.end());
                  ofile << word << " ";
                  }
               }


          Не вижу никакого преимущества Форта над С++.
          он не короче(ну не настолько, чтобы это можно было учитывать), не быстрее и - он непонятен. С++ код можно читать почти как предложения в тексте.
          а форт.. я никак вкурить ни одлну строчку не могу)))
          Хотя последний минус, наверно сугубо субъективный.
          Но, если форт - близок к идеалу, то чем он лучше С++?
            Цитата LuckLess @
            using namespace std;


            int main(int, char*)
            {
            ifstream ifile("test1.txt");
            ofstream ofile("test2.txt");
            string word;
            while (ifile>>word)
            {
            reverse (word.begin(), word.end());
            ofile << word << " ";
            }
            }

            Позвольте! Насколько я понял, это всё реализовано в стандартной библиотеке языка С++, а ты это просто используешь? Кстати, ты это дело проверял на работоспособность? Во что оно преобразует, скажем, текст моего поста?

            Цитата LuckLess @
            он не короче(ну не настолько, чтобы это можно было учитывать)

            Если сравнивать сравнимое, т. е. не писать на одном языке с использованием библиотеки, а на другом собственноручно, то короче, причём заметно. Вот, скажем, напиши на С++ программу, выводящую римские числа.

            Цитата LuckLess @
            не быстрее

            Померял я как-то раз, я уже об этом писал. На MSVC функция вызывается в 10 раз дольше, чем на моём форте. Циклы я сравнивал с паскалём, паскаль быстрее, но я грешу на то, что он оптимизирующий. У меня есть подозрение, что на серьёзных задачах автоматическая оптимизация не очень сильно помогает, правда, я это ещё не проверял.

            Цитата LuckLess @
            он непонятен

            Смотри мой пост номер 39, где я прочитал небольшую лекцию про Форт. идеальный язык программирования (сообщение #1161095) . Я там объяснил, что это не недостаток, а преимущество.

            Цитата LuckLess @
            а форт.. я никак вкурить ни одлну строчку не могу

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

            Цитата LuckLess @
            Но, если форт - близок к идеалу, то чем он лучше С++?

            Опять же см. пост номер 39
              Цитата wormball @
              Позвольте! Насколько я понял, это всё реализовано в стандартной библиотеке языка С++, а ты это просто используешь?

              Извини. а что мне на АПИ файлы читать?
                Цитата wormball @
                Насколько я понял, это всё реализовано в стандартной библиотеке языка С++, а ты это просто используешь?

                А это где реализовано:
                Цитата Relan @
                openfilewrite

                Цитата Relan @
                loadfile

                Цитата wormball @
                2drop

                Цитата wormball @
                tuck

                ?
                А STL - это неотъемлимая часть языка С++. LuckLess несколько неверно реализовал задачку. Нужно было так:
                ExpandedWrap disabled
                  #include <fstream>
                  #include <iterator>
                  #include <algorithm>
                  #include <vector>
                   
                  int main()
                  {
                  std::vector<string> words;
                  std::copy(std::istream_iterator(std::ifstream("file1.txt")), std::istream_iterator(), std::back_inserter(words));
                  std::copy(words.rbegin(), words.rend(), std::ostream_iterator(std::ofstream("file2.txt"), " "));
                  }

                Итого - три строчки, одна переменная.
                  Цитата Flex Ferrum @
                  А STL - это неотъемлимая часть языка С++. LuckLess несколько неверно реализовал задачку. Нужно было так:

                  Не записать слова в обратном порядке, а каждое слово перевернуть надо... а сами слова в томже порядке оставить..

                  Добавлено
                  а если сделать то, что ты написал, то лучше уж
                  ExpandedWrap disabled
                       std::vector<std::string> words((std::istream_iterator<std::string>(std::ifstream("file1.txt"))), std::istream_iterator<std::string>());
                       std::copy(words.rbegin(), words.rend(), std::ostream_iterator<std::string>(std::ofstream("file2.txt"), " "));


                  Добавлено
                  2 строчки ;)
                    Цитата LuckLess @
                    Не записать слова в обратном порядке, а каждое слово перевернуть надо... а сами слова в томже порядке оставить..

                    Цитирую твоё задание:

                    Цитата LuckLess @
                    Напиши программу на форте которая прочитает текстовый файл "text1.txt", создаст "text2.txt" и запишет в него все слова но задом наперед.
                    т.е. text1.txt содержит "asd dsa" к примеру -- выход "dsa asd" в text2.txt .. ты говоришь просто что на форте все записи короче выходят... вот сравнимс..

                    Из примера "asd dsa" абсолютно неясно, надо слова переворачивать или ставить в обратном порядке. Кстати, сам С++ грешит подобными неоднозначностями.

                    Цитата Flex Ferrum @
                    А STL - это неотъемлимая часть языка С++.

                    Ещё раз говорю, что надо сравнивать честно. Я не против хороших библиотек, я только за, но в данном случае мы (по крайней мере я) сравниваем не библиотеки, а языки как таковые. Библиотеки - дело наживное. Я уже предложил задачу: написать вывод чисел в римской системе счисления. В одном из первых постов я уже приводил своё решение:

                    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 ;

                    Вот если это будет на С++ короче, тогда я точно уйду в монахи выучу С++.

                    Кстати, я бы с удовольствием почитал про то, как вы так лихо решили задачу с перестановкой слов. У меня в форте как раз поддержка строк отвратительная (может быть, потому и получилась такая длинная программа). Где про это можно почитать?
                      Цитата wormball @
                      Я уже предложил задачу: написать вывод чисел в римской системе счисления.

                      А словами можешь алгоритм описать? Я, честно говоря, не совсем в курсе - как это правильно делается.
                        Цитата wormball @
                        Из примера "asd dsa" абсолютно неясно, надо слова переворачивать или ставить в обратном порядке. Кстати, сам С++ грешит подобными неоднозначностями.

                        Угу. Да неясно выразился))
                        Какие неоднозначности есть в С++? :blink:

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

                        На мой взгляд - это не два плюса а два жирных минуса. Сам алгоритм короче от этого не записывается.
                        на С++ можно тоже наваять макросы и пользовать их для сокращения записи- но это мрачный изврат.
                        Форт вполне пригоден как язак для решения небольших, прокладных задач. Но никак не для промышленного программирования.
                        А идеальный язык вродь как должен быть пригоден почти везде ;)
                        Цитата Flex Ferrum @
                        А словами можешь алгоритм описать? Я, честно говоря, не совсем в курсе - как это правильно делается.

                        http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D0%BC%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F
                          Цитата Flex Ferrum @
                          А словами можешь алгоритм описать? Я, честно говоря, не совсем в курсе - как это правильно делается.

                          Ну, у меня программа тоже не совсем правильно работает: для 1999 выдаёт MCMXCIX, когда должна по идее MIM, но с другой стороны MCMXCIX - тоже 1999. Одним словом, я беру каждый десятичный разряд и отдельно преобразую его в строку. Вот таблица соответствия:
                          1 I
                          5 V
                          10 X
                          50 L
                          100 C
                          500 D
                          1000 M
                          Эта задача подробно разобрана в "Способе мышления - Форт" (вторая половина четвёртой главы), если это тебе чем-то поможет. Правда, я туда почти не заглядывал.

                          Добавлено
                          Цитата LuckLess @
                          http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%...%BD%D0%B8%D1%8F

                          Во, а у меня, оказывается, правильный алгоритм!

                          Цитата LuckLess @
                          Какие неоднозначности есть в С++?

                          Про это есть на rsdn.ru в разделе "философия программирования". Единственное, что помню - i+++++j.

                          Цитата LuckLess @
                          что у него нету ключевых слов явно начинающих и завершающих блоки(функции и т.д.)

                          Как это нету? Функция начинается с : и заканчивается на ; .

                          Цитата LuckLess @
                          На мой взгляд - это не два плюса а два жирных минуса.

                          Опять же советую прочитать мой пост номер 39 и спорить с аргументацией, приведённой мною в оном посте.

                          Цитата LuckLess @
                          Форт вполне пригоден как язак для решения небольших, прокладных задач. Но никак не для промышленного программирования.

                          У того же Броуди есть куча примеров промышленного применения Форта. Я, кстати, тоже сейчас занимаюсь тем, что пишу на своём Форте программу для моделирования молекул, уже написал где-то половину. Это при условии, что ещё года не прошло, как я начал серьёзно заниматься Фортом.
                            Цитата LuckLess @
                            http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%...%BD%D0%B8%D1%8F

                            Скинь описание сюда - у меня доступа нет.
                              Цитата wormball @
                              i+++++j.

                              Это не неоднозначность. Это UB(undefined behavior), и то что это UB написано в стандарте С++, так что о неоднозначности тут речи идти не может.

                              Цитата wormball @

                              Как это нету? Функция начинается с : и заканчивается на ; .

                              Это заменть не ключевое слово - а ключевой символ))

                              Цитата wormball @

                              Опять же советую прочитать мой пост номер 39 и спорить с аргументацией, приведённой мною в оном посте.

                              А какая там аргументация то?
                              Помпезность С++ -- Хм. Ничего подобного.
                              Вывод о том, рас большую функцию на форте не напишешь то это плюс этого языка мне вообще непонятен.
                              Разбиение на функции хорошо - но не настолько чтоб функция из пары строк уже читалась проблематично.
                              Отсуствие типизации - которое ставиться плисом аргументируя это цитатой тоже вещ странная.
                              Получаеться что перед тем как твою функцию использовать я должен в нее залесть, прочитать и решть - подходит ли она мне или нет - так как типов то нет..
                                > Идеальных языков не было, нет и никогда не будет.
                                да, а асм - не язык а представление машинных кодов на английском, грубо говоря
                                я не считаю его языком, он лучший)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (31) « Первая ... 2 3 [4] 5 6 ...  30 31


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