1. Куча / Говнокод #21996

    −18

    1. 1
    https://habrahabr.ru/post/319846/

    Все равно лучше чем пхп

    Запостил: cykablyad, 18 Января 2017

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

    • сео-пост #быстродействие #отказоустойчивость #удобство
      Ответить
      • хорошо что когда мне было 17 лет у меня не было хабра, и я туда каждый свой высер не выкладывал

        пиздец

        для кого оно это пишет?
        Ответить
        • А я вот высер выложил, его схавали и дали инвайт
          Не знаю, зачем мне он, зато теперь можно въебать кому-нибудь минус

          нет, я не автор поста
          Ответить
          • хабр не торт
            нехуя там делать с такими статьями

            Есть уже болгенос, теперь будет болгенси

            ps: а мне вот интересно
            до какого года детей будут учить пасклю в досбоксе? До 2038-го?
            Ответить
            • Когда преподов нормальных наберут
              Не знаю, как у всех, но в нашем пту, когда поднимается вопрос насчет выкидывания делфи с вба на мороз и замены его на что-то адекватное, поднимается вонь типа "Вот, это же надо программу переделывать, это же язык надо учить"
              Как будто они хотя бы делфи нормально знают
              Ответить
              • А вот кстати вопрос: на каком языке лучше всего учить программировать?

                Если честно, то мне нравился паскаль как _учебный_ язык. Просто в 1998-м он был еще актуален, а сейчас уже нет
                Ответить
                • Тут можно долго спорить, но вот например создатели егэ пошли напитон, выкинув басик (или не его) из списка языков, но оставив поскаль
                  Ответить
                  • многие начинают учить детей питону, да.

                    Это хороший ЯП, но вот отсутствие статической типизации не айс: все таки она мозги ставит на место
                    Ответить
                    • Найти 17-летнего школьника изобретателя языков, который спроектирует нам питон с статическим питухом
                      Ответить
                      • статический питон уже есть

                        называется ни то котлин, ни то свифт, не помню.
                        Ответить
                        • в местной шаражечке на путоне даже ардуино программируют.
                          Пишется прошивка, потом код через программатор заливается на чип.
                          Ответить
                          • да, питона очень много везде

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

                            так что поскаль был полезен своей суровостью
                            Ответить
                          • Так вот о чём Dummy00001 писал: "на 100КБ/с вся система висела ~10-15 секунд пока с модуля камеры картинка сливалась".
                            Ответить
                • 1. Быстродействие
                  2. Отказоустойчивость
                  3. Удобство
                  4. Простота базового освоения
                  5. Кроссплатформенность

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

                    Но дельфи было бы в тыщу раз лучше, чем паскаль под дос, разумеется.

                    На дельфях можно написать под винду что угодно
                    Ответить
                  • > Остаётся паскаль... На делфи, вестимо.
                    PascalABC ещё есть. Он умеет в .NET, но при этом в нём есть Graph и Crt a la турбопас.
                    Ответить
                    • да, это более лучше

                      некоторые так и делают
                      Ответить
                • Хаскелю
                  Ответить
                  • лиспу же) как визардбук

                    Вообще начинать сразу с функциональщины это очень круто наверное, но не многие смогут.
                    Ответить
                    • Где-то слышал мнение, что пиздюки мыслят функционально, а не императивно, и учить их поскалям - это проебать возможность научить их хаскелям
                      Ответить
                      • не знаю, когда я был пиздюком, мне было проще мыслить императивно:
                        1) нарисовать точку
                        2) пикнуть динамиком
                        3) перейти к пункту 1

                        но правда я в сопливом возрасте умел бейсик, так что я уже был испорчен изначально
                        Ответить
                      • И что они будут программировать на хачкиле? Факториал чтоли? Или сразу про монады им задвигать? На императивщине можно калькулятор хотя бы написать или черепашкой на экране управлять.
                        Ответить
                        • А что сложного в монадах? Там всего джве операции и пара тождеств, которые должны для них выполняться. В указатили, ООП и т.д. сложнее въехать с нуля.
                          Ответить
                  • Хаскель в детском саду изучают, емнип.
                    Ответить
                    • орлы? можно пруфоф?

                      в моем деццтве в нашем городе 6-ти летних учили qbasic
                      Ответить
                      • Загугли haskell for kids. Давно эта статья попадалась, я уже и не помню, какого возраста там дети упоминались.
                        Ответить
                    • "little schemer"
                      Ответить
            • Мне кажется, говнокодеров учить в шарагах вообще нет смысла
              Ибо пока они в этих шарагах сообразят чему учить, все успеет пять раз устареть, и в итоге все равно будет неактуальным
              Ответить
              • Основы построения компиляторов или архитектура процессоров даже 20-летней давности вполне актуальны и им стоит учить всех говнокодеров. Классические алгоритмы тоже.
                Ты так говоришь, как будто современный яп - самое главное или даже единственное знание у программиста.
                Ответить
    • > Теперь я хотел бы закончить эту статью.
      Сука. На самом интересном месте. А я так хотел узнать, каким образом const влияет на область видимости переменной...
      Ответить
      • А ты, небось, хотел послушать про компилятор, да?
        Про лексер, парсер, абстрактное дерево, про выведение типов, про разделение чейна на бекенд и фронтэнд, на генерацию кода под современные процы, про вот это всё, да?

        Вечно набегут со всякой занудной хуйней и мешают полёту мысли 17-ти летнего архитектора
        Ответить
      • Может, он писал статью, и тут в его квартиру ворвался страуструп и начал его бить по ебалу? Слишком резко прерывается
        Ответить
        • да нет, ему просто объяснили что нужно читать драгонбук, и ему стало скучно.
          Ответить
    • Нихуя себе, статье даже плюсы ставят
      Ответить
      • Другие 17-ти летние изобретатели языков
        Ответить
        • Я 17-летний и я писал свой компилер (не дописал, заебало)
          Въебал минус
          Что со мной не так?
          Ответить
          • Наверное тебе уже не 17
            Ответить
            • Две недели до совершеннолетия, а я все еще девственница
              Ответить
              • расскажи,как ты писал свой язык
                Ответить
                • Тебе правда интересно?
                  Ответить
                  • да
                    Ответить
                    • nu ladno

                      Приспичило мне написать свой говноязык
                      Взял в правую руку F# (заодно и выучил его), в левую взял FParsec, в среднюю взял System.Reflection.Emit
                      И поехал писать говнопарсер параллельно с говнокомпилятором в CIL

                      Впринципе, ничего увлекательного в этом нет, кроме того, что надо рвать свою жопу об левую рекурсию, когда парсер пишешь
                      Ответить
                      • Парсер -- это самая тривиальная и неинтересная часть ЯП, если, конечно, язык -- не befunge.
                        Ответить
                        • Самое охуительное - это вывод типов и прочая хуйня перед компиляцией, код для которой каждый раз разрастался настолько, что мне больно было на это смотреть
                          Плюс F# достаточно неудобный язык, но писать парсер на C# мне было лень
                          Ответить
                          • Какая система типов?
                            Ответить
                            • Ой, да простейшая, что-то на уровне поскаля
                              Хиндли-Милнера я ниасилил
                              Ответить
        • Когда-то и меня вела дорога приключений... Но это был скорее калькулятор с функциями, чем полноценный язык.
          Ответить
          • и ты расскажи как свой яп делал

            мне просто кажется что это оче силозатратное занятие.
            Ответить
            • Да там всё тупо было...
              > a = 2
              > f(x) = a * x + 3
              > g(f, x) = f(f(x))
              > g(f, 3)
              21
              Вот и все фичи, по сути. И только через много лет я узнал, что это, оказывается, зайчатки функциональщины...
              Ответить
            • Ну сам понимаешь, что силозатраты на [i]это[i] - почти нулевые. Где-то вечер на паскале.
              Ответить
            • Разве в шарагах япы не пилят? У нас была такая лаба.
              Ответить
    • > Приглашен: 18 января 2017 в 14:04 по приглашению НЛО
      Лол. Фейспалмлю со швабра.
      Ответить
      • Нужно провести эксперемент и написать на хабр статью про установку Windows 10. Интересно, дадут инвайт?
        Ответить
        • У меня кстати была охуительная идея поставить винду из линукса
          А хули там делов-то: распаковал esd в корень, залил мбр и положил BCD
          Только чем редактировать BCD под линуксами?
          Ответить
          • А ESD формат документирован разве?
            Впрочем, и BCD тоже нет. Там есть специальный WMI провайдер или BCDEdit, а больше нет нихуя. И даже всякие EasyBCD наверняка юзают WMI.
            Ответить
            • wimtools умеет в esd, проверь

              все, я пошел ставить виндос из арча и меня никто не остановит
              Ответить
              • ну ок, хотя я не уверен что умеет

                на худой конец поставишь семерку: Она в wim
                Ответить
                • wimlib-imagex v1.6.0 and later supports these new files, проверь
                  http://manpages.ubuntu.com/manpages/zesty/man1/wimlib-imagex.1.html
                  Ответить
                  • v1.6.0 and later supports these new files, unless they
                    are encrypted.
                    Ответить
                    • install.esd не зашифрован, проверил за тебя, можешь не благодарить
                      Ответить
          • > чем редактировать BCD
            Была вроде какая-то тулза для редактирования реестра, проверь.
            Ответить
            • BCD нельзя редактировать через реестр
              его конечно мапит configuration manager в веточку, но на Technet/MSDN написано что можно только через WMI, проверь
              Ответить
              • reged из пакета chntpw в арче открывает BCD, проверь
                Ответить
                • Блин, я не спорю что внутри там реестр: в винде он тожэе есть в ``HKEY_LOCAL_MACHINE\BCD00000000``, и там даже видны объекты.

                  Но дальше идет недокументированное REG_BINARY.

                  Что с этим дальше делать?
                  Ответить
                  • Блять, он же не продакшен тулзу пишет... А просто PoC... А для PoC можно и не до конца реверсить, лишь бы работало.
                    Ответить
                  • vanished
                    Ответить
              • > нельзя редактировать через реестр
                > можно только через WMI
                Да кого тут ебёт мнение M$? Они просто ссут, что кто-то случайно сломает себе хуй BCD, если будет править его руками.

                Проверил - в джва клика монтируется обычным regedit'ом как хайв. Значит и линуксовая тулза (если она есть) всяко сможет его поправить.

                З.Ы. А, ну вот, cykablyad уже успел проверить, пока я писал.
                Ответить
                • >>Да кого тут ебёт мнение M$?
                  наверное того, кто не хочет реверсинженирить формат, нет?
                  Ответить
                  • Формат давным-давно отреверсен. Это - самый обычный хайв от реестра.

                    З.Ы. На самом деле, на то дерьмо, которое там хранится, и json'а бы хватило. Но M$ такой M$.
                    Ответить
                    • Почему у M$ такая любовь к бинарным форматам? Уж конфиг загрузчика можно было бы и текстовым оставить
                      Ответить
                    • а в хайве-то что лежит?

                      ну вот тебе мой бутлоадеор
                      Windows Boot Loader
                      -------------------
                      identifier              {current}
                      device                  partition=C:
                      path                    \Windows\system32\winload.exe
                      description             Windows Professional
                      locale
                      recoverysequence        {da36df3e-357e-11e5-be3f-c86000df5fdd}
                      recoveryenabled         Yes
                      osdevice                partition=C:
                      systemroot              \Windows
                      resumeobject            {8ea68847-3581-11e5-ad79-806e6f6e6963}


                      И примерно половина параметров (Включая recoveryenabled, например) там BINARY

                      что с ним делать?
                      Ответить
                      • Как вариант - бездумно скопировать у настоящей венды. См. выше про PoC.
                        Ответить
                        • А в случае UEFI там будет не "C:" в GUID партиции, и его явно надо будет как-то туда прописать
                          Ответить
                          • blkid /dev/sda2
                            Ответить
                          • Хоспаде, гуид вписать так сложно...
                            Ответить
                            • в каком формате и в какое поле?
                              Ответить
                              • Что ты как маленький
                                Смотришь все поля
                                Где байты как у гуида, туда и совать
                                Ответить
                              • А то ты не знаешь, как GUID'ы в блобах хранят :)

                                Берёшь готовую винду, ищешь гуид нужного раздела в этих полях. Вот туда и вписываешь.

                                З.Ы. Ты хочешь у нас всё это выспросить и написать статью на хуябру первым?
                                Ответить
                                • нет, я просто пытаюсь сказать что одного того факта что это ветка реестра НЕ ДОСТАТОЧНО чтобы понять как править BCD без документации от MS
                                  Ответить
                                  • > как править BCD без документации от MS
                                    Всё, M$ получило очередного анального виндораба, который без документации от M$ и шага сделать не может.

                                    Народ форматы и посложнее реверсил... А тут можно и через bcdedit попинать, и через WMI, чтобы с параметрами разобраться. Халява сплошная. А для PoC даже разбираться особо не надо...
                                    Ответить
                                    • Я как-то хотел реверснуть conhost.exe, чтобы посмотреть куда и как оно хранит буфер консоли и сделать свой никому не нужный заменитель cmd (прям как conemu)
                                      Буфер нашел, а дальше ниасилил
                                      Ответить
                                    • лол, какое отношение нелюбовь к реверсинженирингу имеет к вендорабству?

                                      Вы тут на пару с сукаблядью стали рассказывать мне что BCD это hive, а hive давно уже разревершен, то проблем нет, словно там XML или json в ветке лежит.

                                      А там лежит HEX (не всмысле хекс, а всмысле неведомая ёбная хуня) на ёблю с которой можно портатить время.

                                      Даже сама структура BCD (объекты и их поля) документированы всего в одном документе:
                                      "bcd.docx" aka "Boot Configuration Data in Windows Vista" (он легко нагугливается), а в обычном технете нихуя толковова нет, чо уж говорить о формате хранения этого дела
                                      Ответить
                                      • Ебля с НЕХ - это же круто
                                        Эх, монстродевочку бы
                                        Ответить
                                      • > на ёблю с которой можно портатить время
                                        Если ёбля приносит удовольствие - вай нот?
                                        Ответить
                                      • > в обычном технете нихуя толковова нет
                                        Открываем на MSDN доку по WMI интерфейсу для BCD. Ой, а там же все структурки и енумчики описаны! Всё по полочкам разложено. Самый сложный тип - BcdDeviceQualifiedPartitionData в 11000001 (ApplicationDevice) и 21000001 (OSDevice). Но айдишники диска и раздела и тип mbr/gpt в нём найти не составило труда.

                                        Можно хоть сейчас идти на хабр писать нахуй никому не нужную статью по правке BCD через анус.

                                        З.Ы. Блядь, вот хотел завтра на работу вовремя придти. Но из-за тебя, походу, не успею.
                                        Ответить
                                        • лол, ты хочешь сказать что структуры в WMI API совпадают с лейаутом типов в реестре?

                                          ну тогда я посыпаю голову пеплом: сделать BCDEdit под линукс и правда не сложно. Желаю тебе этим заняца))
                                          Ответить
                                          • > совпадают с лейаутом типов в реестре
                                            Нет, но там маппинг прослеживается невооружённым взглядом. А цифровые названия ключей - это собственно енумы из доки (BcdLibraryElementTypes, BcdOSLoaderElementTypes).
                                            Ответить
                                          • Challenge completed
                                            Ответить
                                            • Это от этого на аватарке такая неественная бледность?
                                              Не щадишь ты себя, отдохнуть тебе надо, cykablyad, всё о байтах думаешь.
                                              Ответить
                                              • Это Ао, она няша, и я заебался пока трассировал ее в инкскейпе (0.92 говно, сука, падает, только дай повод)
                                                Ответить
                                  • З.Ы. Тех, кто всякие плойки/иксбоксы/айфоны/ведроиды рутовал без схем, без спек, без документации, и вообще вопреки эуле ты бы тоже отговаривал? :)
                                    Ответить
                      • Ну уж там явно не AES-шифрованные ключи
                        Может, это REG_SZ маскируется
                        Ответить
        • Как интересно, виндос не устанавливается, если не находит лицензионное соглашение в образе
          Еще более интересно, как я умудрился так побить iso
          Ответить
          • > Как интересно, виндос не устанавливается, если не находит лицензионное соглашение в образе
            Переименуй текст GPL в EULA.txt
            Ответить
      • Админ просто тоже хочет язык свой создать
        Ответить
    • > 5) char. Тип для хранения символа. Имеет один параметр строкового типа, который определяет кодировку символа (ASCII = 1 байт, utf-16 = 2 байта, utf-32 = 4, utf-8 = 4 всегда, для удобства индексации).

      А почему utf-8 4 байта, если там может быть и один? Удобство индексации? Какое нафиг удобство индексации, если utf-8 специально сделали таким, чтобы там не было этого удобства в ущерб "плотности упаковки" так сказать?
      Ответить
      • > который определяет кодировку символа
        Щто? Есть символы (model), есть кодировки (view), есть конвертеры (controller), зачем символу нужно знать, в какой он кодировке?
        Символ должен быть четырёхбайтный всегда, а все что "закодировано" лучше вообще словом char не называть, чтобы у людей иллюзий не возникало.
        Ответить
        • > Символ должен быть четырёхбайтный всегда
          Четырех байт хватит всем
          Ответить
          • > Четырех байт хватит всем
            Похоже, что так. Правда, наблюдая за тем, как люди сходят с ума со своими эмодзями, начинают вкрадываться сомнения. Скоро для каждого понятия во вселенной будет U128 символ, а люди будут общаться эмодзи-иероглифами. Все языки превратятся в китайский.
            Ответить
            • Вводить эмодзи с клавиатуры никто не будет, вместо этого нужно будет сфотографировать нужный предмет смартфоном или же изобразить его пантомимой.
              Ответить
              • А как тогда Мизулина будет вводить фильтры? К тому времени алгоритмы распознавания изображений будут лучше?
                Ответить
              • > изобразить его пантомимой
                Хотел бы я посмотреть, как люди изображают пантомимой слова ТРАНСЦЕНДЕНТНЫЙ, ТРАНСЦЕНДЕНТАЛЬНЫЙ, ГОМОТОПИЯ, КАТАМОРФИЗМ.
                Ответить
                • Эти слова большинство буквами-то написать без ошибок не сможет
                  Ответить
                • Вот тебе эмодзи для говна 糞
                  Ответить
                  • Послал тебе гомотопию, отображающую тебя в твой символ, проверь.
                    Ответить
                  • Бедные китайцы, тяжело, наверное, такими штуками какать.
                    Ответить
                • А еще дискурс и симулякр
                  Ответить
            • Надо, чтобы хотя бы научные статьи или законы эмодзями писали.
              Ответить
            • Буквы вместо каны, эмодзи вместо кандзи
              Или наоборот
              Ответить
    • >> Неужели из кучи языков программирования Вам ничего не подошло?

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

      wtf I am reading?
      Ответить
    • > Ассемблер самый быстрый язык => на него мы должны пытаться компилировать(экв. байт кода).

      Настоящие цари хакают процессор и заливают в него свой микрокод
      Ответить
      • Настоящие цари собирают свой процессор
        Ответить
        • настоящим царям не нужен general purpose cpu
          Они пишут на VHDL или Verilog и собирают FPGA или сразу ASIC
          Ответить
          • Настоящие Цари строят свой свечной заводик и делают на нём микросхемы по своим оптимизированным схемам.
            Ответить
            • Настоящие цари создают свою вселенную с такими константами, что строить в них заводики -- одно удовольствие, и электроны сами бегут куда надо
              Ответить
              • Это уже не просто Царь, это уже Царь и Бог!
                Ответить

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