На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Соблюдайте Правила
Модераторы: Модераторы, Комодераторы
Страницы: (90) « Первая ... 58 59 [60] 61 62 ...  89 90  ( Перейти к последнему сообщению )  
    > Теория и практика программировании без "птичьего языка" и сленга, А то программисты стали как секта, которые что-то обсуждают на своем "птичьем языке" и никто их не понимает
      Цитата Flex Ferrum @
      Сейчас - вполне читаемо.

      Для проженных плюсовиков разве что.

      Цитата
      И строк в коде будет меньше, чем в примере на rust.

      Зато какие это будут строки :D

      Добавлено
      Цитата Астарот @
      Цитата D_KEY @
      Язык(Java) неоправданно многословен, довольно примитивен, обладает кучей исторических проблем.

      Ты сейчас описал проблемы буквально всех существующих языков :D

      Степень этого безобразия у разных языков разная. Java один из "чемпионов". C++ тоже, если что.
      Просто во многих случаях(не во всех) вместо Java можно взять ряд языков(Scala, Kotlin и пр.) и не так сильно мучиться. С С++ пока не так просто.
      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
        Цитата Астарот @
        В java у любого объекта есть метод toString(), и не во всех случаях он возвращает что-то "вменяемое" для глаза. Скажем теперь, что нужно городить какой-то огород?

        Зависит от ситуации. Просто в случае возврата/приема Object совершенно непонятно, что нужно-то. Интерфейс размыт.

        Цитата
        Да, приходится кастовать к конкретным типам

        Ну так я так и сказал. Какие слухи? :D

        Цитата
        Возможно с точки зрения теории это не очень правильно, но на практике работает.

        Ты же понимаешь, что "на практике" работает тонна говнокода. Без всяких лучших практик, паттернов проектирования, принципов разработки и т.д. и т.п.
        Все выкинем и забудем? Или к чему ты это говоришь?

        Цитата
        а во-вторых она будет решать сугубо свои внутренние проблемы, а не задачи бизнеса :D

        Не надо кидаться в крайности. Кстати, если работаете спринтами и по скраму, то просто имей в виду, что в таких процессах выше вероятность утонуть в техническом и архитектурном долге. Так что с кривыми решениями нужно бороться чем раньше, тем лучше

        Цитата
        Потому что это не костыль, это решение :)

        Так любой костыль является решением, иначе он бы не ставился ;)
        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
          Цитата D_KEY @
          Степень этого безобразия у разных языков разная. Java один из "чемпионов". C++ тоже, если что.

          А судьи кто? :D

          Цитата D_KEY @
          Просто во многих случаях(не во всех) вместо Java можно взять ряд языков(Scala, Kotlin и пр.) и не так сильно мучиться.

          Только почему-то не берут :D

          Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
            Цитата Астарот @
            Цитата D_KEY @
            Степень этого безобразия у разных языков разная. Java один из "чемпионов". C++ тоже, если что.

            А судьи кто? :D

            Те, кто выбирают язык в качестве инструмента для своих задач, кто же еще.

            Цитата
            Цитата D_KEY @
            Просто во многих случаях(не во всех) вместо Java можно взять ряд языков(Scala, Kotlin и пр.) и не так сильно мучиться.

            Только почему-то не берут :D

            Еще как берут :)
            Но надо же здравый смысл иметь.
            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
              Цитата D_KEY @
              Те, кто выбирают язык в качестве инструмента для своих задач, кто же еще.

              Ну, так ынтырпрайз живет на джаве - как бы выбрали. Ваш кэп.

              Цитата D_KEY @
              Еще как берут :)

              Ага, берут... :D

              Цитата D_KEY @
              Но надо же здравый смысл иметь.

              Здравый смысл подсказывает брать то, что позволяет быстро решить задачу. За счет 100500 либ и богатого сообщества это ВНЕЗАПНО в том числе джава. А всякие скалки с котлинами остаются там, где они есть.
              Сообщение отредактировано: Астарот -

              Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                Цитата Астарот @
                как бы выбрали.

                Ага. Раз и навсегда.

                Цитата
                Ага, берут... :D

                Да, вполне. И фреймворки для Java-мира на той же Scala пишут и для разработки вполне выбирают.
                Akka, Spark, Kafka, всякие там twitter'ы и linkedin'ы. Не?

                Цитата
                За счет 100500 либ и богатого сообщества это ВНЕЗАПНО в том числе джава.

                Так Scala со всем этим хозяйством фактически совместима.
                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                  Цитата D_KEY @
                  Akka, Spark, Kafka

                  И? Ты перечислил три программных продукта, в которых намешано сразу овердохрена языков. И что из этого следует?

                  Цитата D_KEY @
                  всякие там twitter'ы и linkedin'ы. Не?

                  Что не? У всяких там твиттеров и ленкединов стек технологий на рулон туалетной бумаги не влезет. Ну, и если уж на то пошло, то как насчет всяких там Андроидов, не?

                  Цитата D_KEY @
                  Так Scala со всем этим хозяйством фактически совместима.

                  Скала по TIOBE на 31 месте, java - на первом, поэтому давай не будем о грустном :)

                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                    Я вот не понимаю, что все носятся с этим С++ и восхищаются ООП.
                    Но реализовали они табличку VTBL и думают "во круть".

                    А не подумали, что VTBL - это один из многих способов, которые можно придумать для косвенного доступа к функциям.
                    А не круче было бы дать возможность юзверю самому наращивать синтаксис и реализовать "под капотом" любой мыслимый способ/алгоритм/правило вычисления адреса методов?

                    Может я в системный CASE хочу не тип заложить, а что-нибудь другое.

                    Что скажете.

                    а может уже есть такие языки, которые не зажаты тисками ("3-ми китами") классического ООП и позволяют юзверю расширять синтаксис и реализовывать свою самую немыслимую парадигму

                    Добавлено
                    а вы, я смотрю, всё пиписьками меряетесь?
                    Детский сад прям какой-то.

                    Лучше новые концепции обсуждали
                    Сообщение отредактировано: Исмаил Прокопенко -
                    Написать код, понятный машине, и дурак сможет. И только хороший программист сможет написать код, понятный людям
                      Цитата Исмаил Прокопенко @
                      Может я в системный CASE хочу не тип заложить, а что-нибудь другое.

                      Опиши, что именно ты хочешь :D
                      Подпись была включена в связи с окончанием срока наказания
                        OpenGL А что значит этот Ваш смайлик user posted image
                        Вы не серьёзно что ли спрашиваете?

                        Добавлено
                        fitumi Хватит следить за мной!
                        Убью >:(

                        Добавлено
                        OpenGLЯ Вам тут походя, между делом, озвучиваю идеи, которые изменят весь ход развития цивилизации, а Вы хихикаете.

                        Впрочем, потому и озвучиваю так смело: кретины все равно ничего не поймут и только смеятся будут
                        Сообщение отредактировано: Исмаил Прокопенко -
                        Написать код, понятный машине, и дурак сможет. И только хороший программист сможет написать код, понятный людям
                          Цитата Исмаил Прокопенко @
                          OpenGLЯ Вам тут походя, между делом, озвучиваю идеи, которые изменят весь ход развития цивилизации

                          Столько лет прошло, а Никонов не меняется :lool:
                          Цитата TheMachine @
                          т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
                            Цитата OpenGL @
                            Это нечитаемо А если вместо is_convertible я захочу метод вызвать (кстати, можно ли убедиться в наличии публичного метода?), то вообще ад будет.

                            Ну, эмм... Может и нечитаемо, но для меня синтаксис и птичий язык раста тоже не вот сходу вкурить получается. В общем, простейший вариант:
                            ExpandedWrap disabled
                              template<typename T, typename Fn>
                              auto call_action_and_write_res(Fn fn, T&& obj) -> std::enable_if_t<std::is_same_v<decltype(fn(obj)), JsonWriter>>
                              {
                                  fn(obj);
                              }

                            Если посмотреть, то тут словами написано то, что в расте - знаками. Причём отдельного трейта вводить даже не требуется. Полный вариант - здесь. Если раскомментировать строчку 28, то будет ошибка компиляции.

                            Можно чуть упростить:
                            ExpandedWrap disabled
                              template<typename ToTest, typename Expected>
                              using where = std::enable_if_t<std::is_same_v<ToTest, Expected>>;
                               
                              template<typename T, typename Fn>
                              auto call_action_and_write_res(Fn fn, T&& obj) -> where<decltype(fn(obj)), JsonWriter>
                              {
                                  fn(obj);
                              }

                            Хотя, по смыслу, тут скорее не where, а when ставить надо.

                            Ну и немного про все эти конвертации в Json, сериализацию и прочее.
                            Сообщение отредактировано: Flex Ferrum -
                            "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                            Морган Фриман
                            Реализация шаблонов Jinja2 для C++ Jinja2 C++
                              Цитата D_KEY @
                              В твоём примере отсутствие инициализации ни на чём не сказывается. Тебя просили привести пример, где бы сказывалось. Разве нет?


                              Когда я приводил код в своем ответе, я процитировал с помощью тега QUOTE то, на что отвечаю. Там такой просьбы не было. Там только были терки о способе отлова. Процитирую еще раз:

                              Цитата applegame @
                              Ну давай уже порадуй нас примером, когда неверное детерменированное тестами не ловится, а неверное недетерминированное теми же тестами ловится. Очень интересно посмотреть на логику твоей вселенной.
                              Мои программные ништякиhttp://majestio.info
                                Кароч, по поводу писалки объектов в json-формат, сериализацию и прочее. Микрофреймворк на C++ с применением шаблонной магии и немножко разоблачений. Этот код будет работать для любого типа, у которого есть метод WriteJson или для которого специализирован JsonWriterBuilder.
                                ExpandedWrap disabled
                                  #include <iostream>
                                  #include <cstdlib>
                                  #include <type_traits>
                                  #include <experimental/type_traits>
                                  #include <functional>
                                   
                                  using JsonWriter = std::function<void (std::ostream& os)>;
                                   
                                  template<typename ToTest, typename Expected>
                                  using when = std::enable_if_t<std::is_convertible_v<ToTest, Expected>>;
                                   
                                  template<typename T>
                                  using HasWriteJsonFn = decltype(std::declval<T&>().WriteJson(std::declval<std::ostream&>()));
                                   
                                  template<typename T, typename Tag = void>
                                  struct JsonWriterBuilder;
                                   
                                  template<typename T>
                                  struct JsonWriterBuilder<T, std::enable_if_t<std::experimental::is_detected_v<HasWriteJsonFn, T>>>
                                  {
                                      JsonWriter operator() (const T& obj) const
                                      {
                                          return [&obj](std::ostream& os) {obj.WriteJson(os);};
                                      }
                                  };
                                   
                                  template<>
                                  struct JsonWriterBuilder<std::string, void>
                                  {
                                      JsonWriter operator() (const std::string& obj) const
                                      {
                                          return [&obj](std::ostream& os) {os << "\"string\": \"" << obj << "\"";};
                                      }
                                  };
                                   
                                  template<typename T, typename Fn = JsonWriterBuilder<T>>
                                  auto WriteAsJson(T&& obj, Fn fn = Fn()) -> when<decltype(fn(std::forward<T>(obj))), JsonWriter>
                                  {
                                      auto writer = fn(std::forward<T>(obj));
                                      writer(std::cout);
                                      std::cout << std::endl;
                                  }
                                   
                                  int Foo(int)
                                  {
                                      return 0;
                                  }
                                   
                                  class FooClass
                                  {
                                  };
                                   
                                  JsonWriter Bar(int val)
                                  {
                                      return [val](std::ostream& os) {os << "\"value\": " << val;};
                                  }
                                   
                                  class BarClass
                                  {
                                  public:
                                      BarClass(std::string msg) : m_msg(std::move(msg)) {}
                                      
                                      void WriteJson(std::ostream& os) const
                                      {
                                          os << "\"BarClass\" : {" << std::endl;
                                          os << "\t\"message\": \"" << m_msg << "\"" << std::endl;
                                          os << "}" << std::endl;
                                      }
                                      
                                  private:
                                      std::string m_msg;
                                  };
                                   
                                  int main()
                                  {
                                      // WriteAsJson(10, Foo);
                                      WriteAsJson(10, Bar);
                                      // WriteAsJson(FooClass{});
                                      WriteAsJson(BarClass{"Hello World"});
                                      WriteAsJson(std::string("Hello Json!"));
                                  }


                                Как это работает - можно посмотреть здесь.

                                Добавлено
                                Хотелось бы увидеть что-то аналогичное по функционалу, но на том же расте.
                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                Морган Фриман
                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                  Цитата Исмаил Прокопенко @
                                  OpenGLЯ Вам тут походя, между делом, озвучиваю идеи, которые изменят весь ход развития цивилизации, а Вы хихикаете.

                                  Впрочем, потому и озвучиваю так смело: кретины все равно ничего не поймут и только смеятся будут


                                  Исмаил Прокопенко, ты пока ещё не смог стать программистом и получать программистскую зарплату. А OpenGL- смог. Как же так?
                                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (90) « Первая ... 58 59 [60] 61 62 ...  89 90


                                  Рейтинг@Mail.ru
                                  [ Script Execution time: 0,2154 ]   [ 14 queries used ]   [ Generated: 20.08.19, 00:55 GMT ]