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

    Это когда сегодня тебе говорят: к вечеру надо векторный редактор, который работает только с прямыми линиями. На следующий день приходят и заявляют: а теперь надо, чтобы он еще умел вставлять битмапы из файла и рисовать окружности; через полчаса твой продукт уже может все это. Правда, описанный пример хорошо ложиться на парадигму OOD (design), но тем не менее требования кардинально меняются и продукт должен быть быстро адаптирован и не должно было быть потрачено много времени для обеспечения расширяемости на начальном этапе разработки. Как-то так.

    Добавлено
    Кстати, об одномиз подходов, называемых bottom-up design я на днях прочитал и проникся: идея заключается в том, что мы не приступаем непосредственно к решению задачи, а создаем инструментарий, который позволяет нам решить задачу в терминах ее предметной области, после чего решаем задачу на ее «естественном языке». Затем, если на следующий день нас попросили расширить функциональность, то есть два варианта:
    1. новая функциональность может быть выражена в уже описанных терминах предметной области => собираем новую функциональность из готовых кубиков
    2. для расширения продукта необходимо расширить набор понятий предметной области => расширяем базовый инструментарий и из готовых кубиков собираем требуемую функциональность

    Добавлено
    Фактически, bottom-up design похож на OOD, но формализуется не задача, а язык задачи.
      Цитата linuxfan @
      Это когда сегодня тебе говорят: к вечеру надо векторный редактор, который работает только с прямыми линиями. На следующий день приходят и заявляют: а теперь надо, чтобы он еще умел вставлять битмапы из файла и рисовать окружности; через полчаса твой продукт уже может все это. Правда, описанный пример хорошо ложиться на парадигму OOD (design), но тем не менее требования кардинально меняются и продукт должен быть быстро адаптирован и не должно было быть потрачено много времени для обеспечения расширяемости на начальном этапе разработки. Как-то так.

      При таком подходе разница между скриптовыми и компилируемыми языками несколько нивилируется. И вот почему. Да, на скрипте ты можешь докрутить ту или иную фишку (потенциально) быстрее, чем на том же С++. Но! Если ты будешь делать это бездумно, то очень скоро ты получишь такое же спагетти кода, немеренное количество костылей, соплей и проч. проч. проч, которое ты опасаешься получить на плюсах. Итог - сложноподдерживаемый и сопровождаемый продукт.

      Добавлено
      А если изначально подойдешь с умом к решению задачи, то выбор инструментария ты будешь делать уже из совсем других соображений.

      Добавлено
      Цитата linuxfan @
      Кстати, об одномиз подходов, называемых bottom-up design я на днях прочитал и проникся: идея заключается в том, что мы не приступаем непосредственно к решению задачи, а создаем инструментарий, который позволяет нам решить задачу в терминах ее предметной области, после чего решаем задачу на ее «естественном языке». Затем, если на следующий день нас попросили расширить функциональность, то есть два варианта:

      Хороший подход. Частенько им пользуюсь.

      Добавлено
      Собственно, тем тот же шарп или джава "берет" - в нем изначально представленно большое количество этих самых кирпичиков, пользуясь которыми можно решить задачу (.NET Framwork, Swing, и т. п.).
        Цитата Flex Ferrum @
        Но! Если ты будешь делать это бездумно, то очень скоро ты получишь такое же спагетти кода, немеренное количество костылей, соплей и проч. проч. проч, которое ты опасаешься получить на плюсах. Итог - сложноподдерживаемый и сопровождаемый продукт.

        Ну так общеизвестно, что гуано можно написать на чем угодно.
        Я один рз на чистом C написал декодер протокола, причем т. к. в протоколе были пакеты, состоящие из одинаковых типов полей, а мне было впадлу писать кучу case'ов с вызовами одинаковых процедур, я на этом же самом C завернул описания пакетов в C'шные структуры, причем пакеты описывались в терминах протокола (т. е. пакет, состоящий из целочисленного, строкового поля и из массива строковых полей). В результате когда для каких-то целей другой человек начал ковырять этот декодер, я поразился, что эта хреновина, оказывается, недурственно расширяется, правда не без костылей и грязных хаков, но очень легко. Достаточно было вписать пару строчек, но перед этим необходимо было решить более сложную задачу: в какое место их вписывать.
        Фактически, это был мой первый неосознанный опыт bottom-up дизайна. Я получил удовольствие как от реализации, так и от результата.

        Добавлено
        Цитата Flex Ferrum @
        Собственно, тем тот же шарп или джава "берет" - в нем изначально представленно большое количество этих самых кирпичиков, пользуясь которыми можно решить задачу (.NET Framwork, Swing, и т. п.).

        Протестую! Swing, библиотеки Java и .NET'а, это не кирпичики, это материал, из которого надлежить наобжигать кирпичей и сделать цемент для построения приложения! В терминах реальных задач «layout» встречается очень редко :)
          Цитата linuxfan @
          Ну так общеизвестно, что гуано можно написать на чем угодно.

          Ну так об том и речь.

          Добавлено
          Цитата linuxfan @
          Протестую! Swing, библиотеки Java и .NET'а, это не кирпичики, это материал, из которого надлежить наобжигать кирпичей и сделать цемент для построения приложения! В терминах реальных задач «layout» встречается очень редко

          Ээээ... Батенька... Далеко не всегда. В ТЗ, положим, у тебя написано: "На экране должна быть таблица, отображающая перечень активных пользователей". Ты это выражаешь в терминах DataGrid'а + SqlConnection + SqlCommand + некоторое количество хранимых процедур. Что ты тут изобратать собрался?
            Цитата
            Ну так общеизвестно, что гуано можно написать на чем угодно.

            Нужно отдать должное, что на плюсах гуано написать легче, т.к. много очень "интересных" и "специфических" моментов :)
              Цитата BugHunter @
              Нужно отдать должное, что на плюсах гуано написать легче, т.к. много очень "интересных" и "специфических" моментов

              Ну, тут все зависит от того, что понимать под гуаном. Вон, Ho Im плювался от гуано, написанного на PHP.
                Цитата Flex Ferrum @
                Далеко не всегда. В ТЗ, положим, у тебя написано: "На экране должна быть таблица, отображающая перечень активных пользователей".

                Э, нет. ТЗ -- это уже формализованные требования/пожелания пользователя. А пользователь хочет «видеть список активных пользователей» (ой, тафталогия получилась :)), а ты этот список делаешь так: берем 1 часть DataGrid + 1 часть SqlConnection + ..., замешиваем это в class UsersList -- и получаем кирписик для решения задачи.
                  Цитата linuxfan @
                  а ты этот список делаешь так: берем 1 часть DataGrid + 1 часть SqlConnection + ..., замешиваем это в class UsersList -- и получаем кирписик для решения задачи.

                  Ну, далеко не всегда это будет замешено в класс UsersList.
                    Цитата linuxfan

                    на крестах напишу за 20 секунд:

                    ExpandedWrap disabled
                      #include <iostream>
                      #include <cstdlib>
                      int main()
                      {  std::cout << "Random is " << random() << std::endl;  
                      return 0;
                      }


                    Начнется все с попытки реализовать random, закончится выводом. Даже если взять всю libc и заюзать prntf, все равно получется дольше и больше букафф


                    ExpandedWrap disabled
                      void main ()
                      {  
                        printf ( "Random is %X", rand() );
                      }

                    и где ж многа букаф та? прошу заметить - даже хедеров никаких не нужно..
                      Цитата mICRo @

                      и где ж многа букаф та? прошу заметить - даже хедеров никаких не нужно..

                      А теперь вместо %X пишем %s (ну абшиблись мы). Радостно наблюдаем за результатом...
                        Цитата mICRo @
                        и где ж многа букаф та? прошу заметить - даже хедеров никаких не нужно..

                        Это половые проблемы MSVC. По стандарту нужен:
                        1. stdlib.h (random)
                        2. stdio.h (printf)
                        В оригинальном посте речь шла об ASM, а printf ИМХО одно из самых удачных изобретений человечества. Плюсовые потоки по удобству использования сильно сливают printf'у, т. к. вместо каких-нибудь "%5.2f" там такой огород писать придется... Яркий пример того, что плюсы писались не для человека, а для машины.

                        Добавлено
                        Цитата Flex Ferrum @
                        А теперь вместо %X пишем %s (ну абшиблись мы). Радостно наблюдаем за результатом...

                        Ну нормальный компилер (gcc) кинет варнинг :)
                          Цитата linuxfan @
                          Плюсовые потоки по удобству использования сильно сливают printf'у, т. к. вместо каких-нибудь "%5.2f" там такой огород писать придется... Яркий пример того, что плюсы писались не для человека, а для машины.

                          Так подобная штука и в плюсах есть. Boost::format (http://www.boost.org/libs/format/doc/format.html) называется, причем оно помощнее, чем printf будет.
                          ExpandedWrap disabled
                            cout << boost::format("writing %1%,  x=%2% : %3%-th try") % "toto" % 40.23 % 50;
                                 // prints "writing toto,  x=40.230 : 50-th try"
                            Цитата mo3r @
                            Boost

                            Набор костылей на все случаи жизни :), причем и запись какая-то неестественная.
                              Цитата linuxfan @
                              Набор костылей на все случаи жизни :)

                              кирпичики, из которых можно строить хорошие системы :)
                                Цитата wormball @
                                Таки выкинули. (и не надо говорить, что holy wars - это не корзина!)
                                Теперь надо переименовать в "asm vs c++"


                                А тема и есть холиварная
                                каждый считает тот язык идеальным,
                                к которому привык

                                Добавлено
                                Цитата linuxfan @
                                Набор костылей на все случаи жизни , причем и запись какая-то неестественная.

                                это так любую библиотеку можно назвать костылями,
                                хотя на самом деле они именно
                                Цитата mo3r @
                                кирпичики, из которых можно строить хорошие системы
                                Сообщение отредактировано: impik777 -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (31) « Первая ... 19 20 [21] 22 23 ...  30 31


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0668 ]   [ 15 queries used ]   [ Generated: 20.07.25, 08:39 GMT ]