1. C++ / Говнокод #25198

    −1

    1. 1
    Почему пхпшники получают поболя крестоблядей?

    Почему пхпшники получают поболя крестоблядей?

    Запостил: crestoblyad, 16 Декабря 2018

    Комментарии (209) RSS

    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Крестобляди дефолтно нужны в финансовых конторах. Это утверждение верно?
      Ответить
    • > поболя

      Возможно, вы имели ввиду "попоболя"
      Ответить
      • Кстати, чем смазываешь свой анус?
        Ответить
      • показать все, что скрытоvanished
        Ответить
        • инбокс уже по сути мёртв, как и Г+

          Яндекс хороший, я не обижусь. Вот если бы ты mail.ru пригрозился, тогда да, пришлось бы inbox реанимировать
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • > Что это означает?

              Inbox by Gmail is going away at the end of March 2019. The new Gmail has a fresh new look built with top Inbox features like snooze, nudges and more to help you get more done.

              > а по адресу mail.google.com разместить инбокс

              ходи на inbox.google.com, можешь ещё целых три месяца наслаждаться.

              > неработающим UI

              УМВР
              Ответить
              • показать все, что скрытоvanished
                Ответить
              • >> неработающим UI
                > УМВР
                Видимо, на машине для тестов сервисов с 128ГБ памяти и 32 ядрами.

                Даже тормознутые говноIDE можно понять. Там хотя бы какие-нибудь фичи по ещё более умному отлову ошибок можно добавлять, более умный частичный парсинг и онлайн подсветку ошибок.

                Но гпочта даже не работает в оффлайн режиме, она становится бесполезной сразу после отключения от интернетов, даже свежее письмо не открывается. То есть все алгоритмы гоняются на сервере, почта в браузере - лишь аналог терминала к мощной машине, которые умели строить ещё в 60-70 годах так, чтобы не тормозило. А никаких полезных сложных клиентских алгоритмов и полезных ресурсоёмких фич так и не добавилось.
                Ответить
                • > Видимо, на машине для тестов сервисов с 128ГБ памяти и 32 ядрами.

                  В ноутбуке тоже.

                  Я почту вообще никогда не закрываю, она загружается ровно один раз при запуске браузера и дальше не особо тормозит.
                  Ответить
                • > 128ГБ
                  На 32 гигах тоже норм, почти не тормозит.
                  Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Слышал, видел. Я о том же.

                    Thunderbird содержит тонны кода, множество клиентских алгоритмов для работы с почтой в оффлайне. Но не тормозит как сраная вкладка, которая только и делает, что посылает пару запросов к серверу, на котором крутятся алгоритмы.
                    Ответить
                    • > Но не тормозит как сраная вкладка

                      Сраную вкладку написали твои коллеги, жс-программисты, на твоём любимом языке программирования. Им важно чтобы работало и чтобы было красиво, а не ковыряться в низкоуровневом говне (за такое промоушенов не дают). Всё по твоим же заветам.
                      Ответить
                      • Это не мои коллеги и не мои заветы. Я говорил и говорю, что не надо писать красивое тормознутое говно, а надо писать экономные программы, имеющие адекватную функциональность и удобные умолчания.

                        Ковыряние в низкоуровневом говне в нашем веке не так сильно связано с пирфомансом. Сейчас в говне ковыряются автоматика (движки, конпеляторы) и создатели автоматики. И это правильный подход. В говне ковыряются один раз, а затем переиспользуют в библиотеках и компиляторах. Ежепрограммное ковыряние в низкоуровневом говне - пережиток прошлого, а не признак особого ума или выдающихся способностей программиста. Это то же самое, что и http://govnokod.ru/212.

                        У веб-питухов под боком был отдел в8-питухов, у которых можно было спросить о том, как не слить пирфоманс в своём же браузере. У них был профайлер в их же браузере и, я надеюсь, отдел тестировщиков.
                        Но в говно всё скатилось потому, что во-первых, менеджерам нужны отчёты о прогрессе (если программа работает, надо это исправить, вводя новые баги и фичи для имитации прогресса, и нефункциональные изменения вроде оптимизации за благо не считаются), а во-вторых, компании нужны не радостные пользователи, а более эффективный показ рекламы. В этом случае глючащий интерфейс ценится больше потому, что пользователь будет его перезагружать и смотреть новые рекламные объявления.
                        Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • Кстати, что такое смузи?
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • Тру кодер ебонит биты, а не UI
                            Ответить
                            • показать все, что скрытоvanished
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                              • Плохой подход.

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

                                Область UI же так хорошо не исследована, в ней меньше готовых ответов. В отличие от математических алгоритмов здесь не установлены явно пределы оптимизации, асимптотика алгоритмов работает на другом конце (не на стороне бесконечности, а на стороне нуля), здесь дополнительное действие - не вклад в пренебрежимо малую O(1), а проблема, которую надо решать. Здесь повторяющиеся действия - залог ошибки, расположение элементов интерфейса влияет на скорость работы с ним, дотягиваемость мышью конфликтует с логическим расположением, удобным для глаз. Интерфейс каждой программы - уникален, а создание удобного интерфейса - целое искусство. Нужно соблюдать баланс между удобным минимализмом и полезной функциональностью. И это влияет как на написание программ (больше интерфейс - больше изменяемого состояния), так и на использование (больше интерфейс - хуже в нём разобраться). И если за UI берётся непрофессионал, то выходит неюзабельное говно.

                                Создание UI - всегда вызов, всегда творческий процесс и возможность пошевелить мозгами.
                                Создание сервера с API - штамповка стандартных алгоритмов, удел заедушных питушков.
                                Более правильным было бы сделать хороший пользовательский интерфейс, а желающий мог бы написать сервер под себя.
                                Ответить
                                • UI -- практически как низкоуровневая работа с микроконтроллерами. Математика и здравый смысл работают только внутри программы, снаружи -- аналоговый беспредел. Форма сигналов искажается (неинтуитивное отображение), биты теряются (пользователь не понимает), синхронизация теряется (пользователь не понимает, в каком режиме находится и жмёт на все кнопки сразу).
                                  Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • Ну так новая инновационная питушня встречается чуть чаще, чем никогда.
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • То есть профитом считается ебать себе мозг максимально сложными задачами?
                                        Ответить
                                        • показать все, что скрытоvanished
                                          Ответить
                                        • >То есть профитом считается ебать себе мозг максимально сложными задачами?

                                          Кир Рик начинал с мизинчика...
                                          Ответить
                                        • Программист -- существо, которое хочет как-то оправдать свою профессию. Он видит труд врачей, виноделов, строителей и осознаёт приносимую ими пользу. Эти древнейшие профессии были востребованы раньше, будут востребованы и в будущем, представители их занимаются делом благородным. Кровью и потом они зарабатывают себе на хлеб.

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

                                          Программист старается придать своей работе важность. В ход идут сложные алгоритмы, стереотипное мышление (этот язык для царей, остальные - говно) и заносчивость. Чем больше напердолился -- тем лучше. Потратить 100 часов на программу на "C++" -- почётнее, чем 10 часов на программу на "JavaScript". И плевать, что память течёт и на обдумывание всех мелочей, решённых в движке JS, не хватило ресурсов мозга.

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

                                          А всего-то нужно было получать удовольствие от своей работы. Человечеству помогают не суперпрограммы с новейшими алгоритмами, а тупой бойлерплейт. Пишешь простые массовые программы -- помогаешь планете.
                                          Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • показать все, что скрытоvanished
                                              Ответить
                                            • Как-будто у программистов на других языках наукоёмкость выше.

                                              В том же перекладывании битов из порта в порт ничуть не больше науки, чем в перекладывании строчек из поля в json.
                                              Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • И пожертвовать за счёт этого функциональностью и архитектурой. Потому, что на обдумывание возни с памятью уйдут все ресурсы мозга.
                                                  Ответить
                                                  • > обдумывание возни с памятью
                                                    Х.з., у меня в джаве или питоне возня с ресурсами больше ресурсов мозга отнимает чем в крестах. Хотя может просто чуть больше опыта надо, чтобы на моторной памяти ебашить эти ваши close().
                                                    Ответить
                                                    • показать все, что скрытоvanished
                                                      Ответить
                                                    • показать все, что скрытоvanished
                                                      Ответить
                                                      • With решает только часть проблем. Надо придержать ресурс подольше - добро пожаловать в мир боли и бройлерплейта.
                                                        Ответить
                                                        • показать все, что скрытоvanished
                                                          Ответить
                                                        • В этом случае и в C++ начинается боль, так что разницы нет.
                                                          Ответить
                                                          • показать все, что скрытоvanished
                                                            Ответить
                                                            • показать все, что скрытоvanished
                                                              Ответить
                                                            • Нет, всё то же самое.

                                                              Вариант 1. Глобальная переменная или неудаляемая переменная в куче
                                                              Переменная один раз инициализируется, живёт всегда.
                                                              Объявление + одна команда на инициализацию в C++; 1 команда на инициализацию в python.

                                                              Вариант 2. Переменная с ограниченным временем жизни.
                                                              В C++ переменная создаётся внутри фигурных скобок, внутри тех же фигурных скобок сидит код произвольной сложности.
                                                              В python переменная создаётся в блоке with, внутри блока сидит код произвольной сложности.

                                                              Вариант 3. Переменная с пользовательским временем жизни.
                                                              В C++ одной командой создаётся, одной командой удаляется.
                                                              В python одной командой создаётся, одной командой очищается.

                                                              Вариант 4. умные указатели.
                                                              Здесь, с одной стороны, в python работает более мощный GC.
                                                              С другой стороны, никто не мешает напейсать свой подсчёт ссылок в python и использовать для хранения расшариваемых полей внутри объектов, с которыми работают через with.
                                                              Ответить
                                                              • > Нет, всё то же самое.
                                                                Я бы так классифицировал (если отбросить объекты без ресурсов, т.к. с ними GC справляется идеально):
                                                                1) Объектом владеет скоп. Тут спасает with.
                                                                2) Объектом владеет программа. Всё ок. При желании можно свести к 1 через with в main().
                                                                3) Объектом владеет другой объект. Пришло время позвать close() из close(). Бройлерплейт, но жить можно.
                                                                4) Объектом владеет несколько других объектов. Удачного подсчёта ссылок (в итоге всё сводится к 1+3) и аккуратной работы с back ссылками.
                                                                5) Объектом владеет хуй пойми кто - типичная хуйня от сишника. Добро пожаловать в ад (на любом языке).

                                                                Вот в крестах 3 (и 3 как часть 4) не требует дополнительного кода.
                                                                Ответить
                                                              • Также в языках с GC довольно сложно передать владение от скопа другому объекту. К примеру, создать 2 объекта и отдать их третьему.

                                                                В питоне для этого таки можно заюзать ExitStack. Можно ли штатными средствами вырвать объект из цепких лап with в джаве или шарпе - хуй знает (в принципе можно замутить аналог ExitStack).

                                                                Ну и объекты начинают делиться на первосортные (только память) и второсортные (с ресурсами). Причём любой объект, который сохранит в себе ссылку на второсортный, зашкваривается вместе со всем использующим его кодом...
                                                                Ответить
                                                      • > в джаве нет

                                                        try-with-resources с седьмой джавы есть.
                                                        Ответить
                                                    • Ха! Интерфейс сделали более удобным и высокоуровневым, чем возня с ручным закрытием.

                                                      Но всё же возня с владением ресурсов должна быть более жёсткой. Без неё даже простую функцию не напишешь: объект либо скопируется лишний раз, либо утечёт.
                                                      Ответить
                                                      • > владением ресурсов
                                                        Ну концепция владения - не rocket science. В общем-то она и в языках с gc помогает в аморфный пиздец не скатываться.
                                                        Ответить
                                                  • показать все, что скрытоvanished
                                                    Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                        • показать все, что скрытоvanished
                          Ответить
                        • Полагаю, то же, что и smoothie. Суёшь всё то, что находишь на дне холодильника в блендер и всё, ты хипстер.
                          Ответить
                      • показать все, что скрытоvanished
                        Ответить
            • > антиспам получше будет

              Ну ты учи машину, кликай в "Spam!". Всё зависит от тебя, гуест.
              Ответить
          • показать все, что скрытоvanished
            Ответить
        • Hipsters don't know 'bout my SMTP
          Ответить
      • К счастью, нет. А правдивы ли слухи о том, что яндекс дно?
        Ответить
    • "C++ — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист. Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок. Работодатель же это сомнительное умение не ценит, и совершенно справедливо."
      — vsl, 2007(?)
      Ответить
      • Давайте например рассмотрим некоторые баги в GCC

        https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88517
        > Virtual-base class class constructor with for-loop with initializer list referencing local variable not executed

        Как всё сложно, виртуальные классы, конструкторы какие-то, локальные референсы
        Если так подумать, нет ни одного соответствующего стандарту C++ компилятора. Любой компилятор крестов содержит n-ное количество багов, и некоторые из подобных багов живут годами. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51577 например этот баг живет аж с 2011 года, чего-то там в неймспейсе находит, но не должно находить.

        > This should be rejected, but lookup using associated namespaces finds operator== in the global namespace. It should only look in namespace A.

        https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87208 и вот это еще, этот относительно недавний, но тоже косяк с этим перегрузочным бредом и неймспейсами

        https://en.cppreference.com/w/cpp/language/adl
        > Argument-dependent lookup, also known as ADL, or Koenig lookup, is the set of rules for looking up the unqualified function names in function-call expressions, including implicit function calls to overloaded operators. These function names are looked up in the namespaces of their arguments in addition to the scopes and namespaces considered by the usual unqualified name lookup.

        https://en.cppreference.com/w/cpp/language/template_argument_deduction а еще вот это
        Посмотрите сколько текста о каких-то мутных особенностях языка что вот там какая-то дедукция через вот что-то там
        Ответить
        • Какой вменяемый человек будет тратить свое время на вызубривание каких-то говноособенностей у кривого и убогого язычка? В общем я склоняюсь к точке зрения, что нормальному программисту надо забивать голову не знаниями о кривых особенностях кривого и костыльного ЯП, а забивать их знаниями об алгоритмах, структурах данных, какой-нибудь математикой (ну там линейной алгеброй, если игровой движок писать надо), какими-нибудь узкоспециализированными знаниями, нужными для конкретной области (например знаниями об устройстве нейросетей, знаниями о криптографии, криптографических алгоритмах, ну там алгоритмы сжатия, видео-аудио кодеки какие-нибудь, т.е. знания конкретной предметной области). Язык просто должен не мешать решать прикладные задачи.
          — j123123, 2018
          Ответить
          • > Язык просто должен не мешать решать прикладные задачи.

            Имненно поэтому я за Forth:
            https://colorforth.github.io/1percent.html

            There is no syntax, no redundancy, no typing. There are no errors that can be detected. Forth uses postfix, there are no parentheses. No indentation. Comments are deferred to the documentation. No hooks, no compatibility. Words are never hyphenated. There's no heirarchy. No files. No operating system.
            Ответить
          • показать все, что скрытоvanished
            Ответить
    • Ванильные PHP-кодеры рубят капусту зная только о существовании ассоциативного массива.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий