1. Си / Говнокод #23411

    +5

    1. 1
    2. 2
    3. 3
    int hcreate(size_t nel);
    ENTRY *hsearch(ENTRY item, ACTION action);
    void hdestroy(void);

    Using these functions, only one hash table can be used at a time.
    The argument nel specifies the maximum number of entries in the table. (This maximum cannot be changed later, so choose it wisely).
    Individual hash table entries can be added, but not deleted.

    Одной хеш таблицы хватит для всех, ресайзить её или удалять элементы - нинужная фича.

    Запостил: bormand, 15 Октября 2017

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

    • POSIX такой POSIX.
      Ответить
      • Linux:
        int hcreate_r(size_t nel, struct hsearch_data *htab);
        int hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab);
        void hdestroy_r(struct hsearch_data *htab);

        КОКОКО ЛИНУКС НЕ СТАНДАРТ ТАК НЕПРАВИЛЬНО ОДНОЙ ТАБЛИЦЫ ХВАТИТ НА ВСЕХ!!!пыщ-пыщ-пыщ
        Ответить
        • Ну это расширение от GNU. Согласно стандарту POSIX, программа должна юзать одну таблицу, время жизни которой совпадает со временем жизни программы.
          Ответить
          • Зачем вообще придумали нереентерабельные функции?
            Ответить
            • Для удобства же, чтобы лишние параметры не передавать. Ну и чтобы не отклоняться от стиля, заложенного создателями си.
              Ответить
              • Тогда предлагаю для соблюдения стиля добавить функции float sin_nonreentrant(void), float cos_nonreentrant(void), аргумент которых будет не передаваться в параметре, а, например, автоматически извлекаться из последнего оператора присвоения. Во-первых, не будем передавать «лишнего». Во-вторых, на платформах с сопроцессором в итоге всё равно сведётся к извлечению аргумента из регистра ST(0).
                Ответить
                • M_PI; // кто сказал, что это бесполезное выражение?
                  3.0;
                  div();
                  sin();
                  "sin(pi/3) = %f";
                  printf();
                  Ответить
                  • И конпелятор будет легче писать...
                    K&R ведь при создании языка главным критерием считали простоту создания конпелятора.
                    Ответить
                  • Запахло FORTH'ом.
                    Ответить
                    • приведи реальный пример ПО на FORTH/FACTOR
                      Ответить
                      • ну привет
                        https://en.wikipedia.org/wiki/Open_Firmware
                        Ответить
                        • Status: Withdrawn (2005)

                          Сан-Андреас вышел на ПК и Солнце закатилось для этого уникального произведения
                          Ответить
                      • https://www.forth.com/resources/forth-apps/

                        + Eserv, nnCron

                        На факторе не видел пока...
                        Ответить
                • > к извлечению аргумента из регистра ST(0)
                  Как-будто где-то кроме x86 есть математический сопроцессор со стеком...
                  Ответить
                  • Царь другими платформами не пользуется.

                    *****

                    Глянул руководство по VFP, используемому на ARM — и правда, там все инструкции ссылаются на произвольные регистры, а не на стек.

                    А какие процессоры с сопроцессорами сейчас распространены?
                    Ответить
                    • Ну в ARM'ах это технически считается сопроцессором, хоть и на том же кристалле разведено.
                      Ответить
                      • А на x86 на другом чтоли? Как там, в 1986-м?
                        Ответить
          • > время жизни которой совпадает со временем жизни программы.

            Кстати, а ведь когда-то время жизни программ было другим. Не было монстроподобных программ типа Open Office, зато были мелкие консольные утилиты, выполняющие одну мелкую операцию, типа cat, grep, sed, diff, patch, head, tail, split. Возможно, когда изобретали POSIX, думали, что сложные процессы будут составляться из запусков маленьких программок, которые будут жить недолго.
            Ответить
            • > сложные процессы будут составляться из запусков маленьких программок, которые будут жить недолго
              – и общаться посредством произвольного выбранного текстового формата

              IPC это вообще кладезь интересных историй о том, как
              Ответить
              • любую информацию можно представить как поля, разделенные табиками
                ну а елси надо поменять порядок то всегда есть awk


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

                  проблема csv
                  Ответить
                  • но современные ребята не растерялись, и добавили говна в говно, чтобы ты мог есть говно, пока ты ешь говно: `jq(1)`
                    Ответить
                    • JQ1 is a thienotriazolodiazepine and a potent inhibitor of the BET family of bromodomain proteins which include BRD2, BRD3, BRD4, and the testis-specific protein BRDT in mammals.


                      Клавіша змиву Geberit Sigma01 square 115.660.JQ.1 хром матовий
                      3 912,00 грн / шт

                      О_о срать дорого
                      Ответить
                      • Если ты посрал, зараза,
                        Дерни ручку унитаза
                        Если нету таковой,
                        Протолкни говно ногой.
                        Если нет воды в бачке,
                        Пошуруй рукой в толчке!
                        Ответить
                      • > срать дорого

                        именно по этому я
                        Ответить
                • имнено по этмоу в Powershell передаются объекты, и такой проблемы нет

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

                    но в целом проблему не отрицаю

                    но это в общем даже не шелла задача, а окружения как такового
                    Ответить
              • Вы с MAKAKA — два сапога пара.
                Ответить
                • Шерочка с Машерочкой
                  Ответить
                • позвольте, сударь, но у меня на подошве другой пароль!
                  Ответить
    • И вишенка на торте: The hdestroy() and hdestroy_r() functions do not free the buffers pointed to by the key and data elements of the hash table entries. (It can't do this because it doesn't know whether these buffers were allocated dynamically.) If these buffers need to be freed (perhaps because the program is repeatedly creating and destroying hash tables, rather than creating a single table whose lifetime matches that of the program), then the program must maintain bookkeeping data structures that allow it to free them.
      Ответить
      • > perhaps because the program is repeatedly creating and destroying hash tables, rather than creating a single table whose lifetime matches that of the program
        С каким осуждением-то написано: мол, какие-то дебилы постоянно пересоздают свою хэштаблицу, вместо того чтобы как нормальные люди взять одну на всё время работы программы!
        Ответить
        • Писать программы запрещено. Осуждаем.
          Ответить
          • МОРСКОЕ ПРАВО МИРОВОЕ ПРАВО РИМСКОЕ ПРАВО И ЛЮБОЕ ПРАВО ЗАПРЕЩЕНО ТАБУ ХАРАМ НАЛОЖЕНО ВЕТО ПРИКАЗЫВАЮ ЖИТИЕ БЫТИЯ ЖИЗНИ ЖИВОЙ ПО ПРИРОДНОМУ РОДОВОМУ И БОЖЕСТВЕННОМУ ЕСТЕСТВЕННОМУ АБРАЗА ВАЯНИЮ УТВЕРЖДЕНО
            Ответить
          • Stop programming computers! Sand was never meant to think. This is cruel to the rocks.
            Ответить
    • Ein Kern!
      Ein Thread!
      Eine Haschtabelle!
      Ответить
      • Почему ты звук "ш" написал по немекци, а остальное по английски?
        Ответить
        • Kern по-немецки (по-английски будет kernel), Tabelle по-немецки (по-английски будет table).

          Что же касается заимствований Thread и Hasch, то я мог бы написать исконно немецкие варианты, но, во-первых, большинству читателей ГК будет труднее, во-вторых, я не знаю, какое из слов, обозначающих нить, используется в компьютерной терминологии.

          Кстати:
          http://www.linguee.com/english-german/search?source=auto&query=thread

          И самое смешное (осторожно, среди примеров есть сленг):
          http://www.linguee.com/english-german/search?source=auto&query=hash
          Ответить
          • ну вот я среагировал на Thread который стопудово не будет так читаться (th же не используется для передачи такого звука у немцев)
            Ответить
            • Пожалуй, никого не удивляет слово Bibliothek, в котором немцы th читают как t, хотя это слово заимствовано через латынь из греческого, а в греческом на месте th была буква θ, которая читается... как [θ], т. е. как th в английском.
              Ответить
              • > читается... как [θ], т. е. как th в английском
                th как think
                th как that
                s как доллар
                Ответить
                • In accents with th-debuccalization, the cluster /θr/ becomes [hr], giving these dialects a consonant cluster that doesn't occur in other dialects. The replacement of /θr/ with [hr] leads to pronunciations like:
                  three - [hri]
                  throw - [hro]
                  through, threw - [hrʉ]
                  (Википедия про th)

                  threwknee!
                  Ответить
                  • Какие-то пидорахи тебя минусуют. Вероятно, не хотят хрюкать.
                    Ответить
                  • Какой простор для эвфемизмов: через колено, бросил колено...
                    Ответить
                • «Тета» читается как th в слове think.

                  Как th в слове that читается буква «дельта».
                  Ответить
              • Het bibliotheek: хет библиотхэйк (х почти не слышно)
                Ответить
            • > который стопудово не будет так читаться

              В немецком полно заимствованных слов, которые читаются не по правилам. der Thread, кмк, оптимальный перевод.
              Ответить
      • Een kern
        Een draad
        Een hashtabel
        Ответить
    • так а нельзя потом просто компьютер перегрузить чтобы сброить?
      Ответить
      • Когда у нас в школе были компьютеры с DOS'ом, дотянуться до кнопки RESET и дождаться новой загрузки системы было быстрее, чем найти выход из программы. Жаль, сейчас времена изменились, перезагрузка стала требовательной к ресурсам...
        Ответить
    • А в эрланге тоже одна хэш-таблица на процесс.
      Ответить
      • эрланг форсил микросервисы за долго то того как докер сделал это брендом
        Ответить
        • Хм, что именно тебе в эрланге показалось похожим на микросервисы?
          Ответить
          • Акторы, разнесенные на разные ноды
            Ответить
            • Мне казалось, что суть микросервисов не в этом, а в изоляции компонентов системы. Distributed Erlang обеспечивает никакую изоляцию, ибо решает он противоположную задачу.
              Впрочем, я с микрушнёй не работала, спорить не буду.
              Ответить
    • Нихуя не понял, но ставлю плюс борманду.
      Ответить
    • а чё, нормально
      у нас в одной либе большие аргументы (мегабайт-два) передаются из функции в функцию через файл, потому что памяти мало
      а чтобы быстрее работало, файл создается на рамдиске
      Ответить
      • А рамдиск - в свопе (потому что памяти мало)?
        Ответить
        • А своп — на NTFS-разделе в файле с атрибутом «сжатый».
          Ответить
        • а в своп, вроде бы, операционка не умеет
          Ответить
          • приведи реальный пример операционки, которая не умеет в своп
            Ответить
            • MS-DOS. PC-DOS. TR-DOS. CP/2. Xenix. Какие-то версии Minix.

              Любая ОС без MMU.
              Ответить
              • думаешь, хомячок писал под мс-дос?
                Ответить
                • Смотря что такое "94". Год рождения или год регистрации ника?
                  Ответить
                  • Приведи реальные примеры сайтов, работавших в 1994-м году.
                    Ответить
                    • https://en.wikipedia.org/wiki/List_of_websites_founded_before_1995

                      >youngmonkey






                      Chabad.org is the flagship website of the Chabad Hasidic Judaism movement.[28]
                      Ответить
                      • > By the end of 1994, the total number of websites was 2,278
                        > By June 1995, the number of websites had expanded significantly, with some 23,500 sites.

                        – там php изобрели в промежутке или что
                        Ответить
                        • First appeared 8 June 1995; 30 years ago[1][2]
                          Ответить
                        • В 1995-м веб-браузеров стало больше. До этого сайты толком некому было смотреть, у интернетчиков были только клиенты FTP, электронной почты и NNTP, ну и всяких gopher и wais.
                          Ответить
                      • > The Hebrew University of Jerusalem (HUJI)

                        Но о чём его ни спросишь, получаются хуи.
                        Ответить
                        • https://play.google.com/store/apps/details?id=kr.co.manhole.hujicam&hl=nl
                          Ответить
                          • >man hole

                            да сука
                            Ответить
                          • > Вспомнить 1998

                            А почему только 1998, а не всё?

                            https://pbs.twimg.com/media/GUfSfLEWUAEhjtk?format=png
                            Ответить
                            • https://ic.pics.livejournal.com/shakko.ru/2710882/4569586/4569586_original.png
                              Ответить
                              • https://s00.yaplakal.com/pics/pics_original/5/9/1/1373195.jpg
                                Ответить
                                • на орле в позе орла
                                  Ответить
                                • в чём принципиальное отличие между ракабу, якакал и фишкинет?
                                  Ответить
                                  • Добавлю:

                                    https://trinixy.ru/

                                    https://svalko.org/

                                    джойреактор
                                    Ответить
                                • Пиздец, яплакал ещё жив? )
                                  Ответить
                                  • https://iy.kommersant.ru/CorpImages/Projects/posters9may/posters/1600w/df45b5a9.jpg
                                    Ответить
                      • IMDB, оказывается, старше веба. Эта база была доступна ещё в Usenet.
                        Ответить
              • >Любая ОС без MMU.

                MMU это фича процессора. Сделать ОС со свопом для работы на процессоре без MMU вполне возможно. Есть ли реально такие ОС - хуй знает
                Ответить
                • Ты предланаешь на каждое обращение к памяти вызывать прерввание которое будет чото куда-то копировать эмулируя виртуальные адреса?
                  Ответить
                  • > Ты предланаешь на каждое обращение к памяти вызывать прерввание которое будет чото куда-то копировать эмулируя виртуальные адреса?

                    Необязательно. В контроллере у тебя в адресное пространство и так может быть флеш-память отображена, так что своп у тебя как бы и так есть. А еще можно особым образом переключать банки внешней флеш-памяти. В спектруме например была реализована такая хуйня
                    https://ru.wikipedia.org/wiki/ZX_Spectrum#Модели_Sinclair_Research

                    > Процессор Z80 имеет 16-разрядную шину адреса, что означает, что он может адресовать только 64 КБ памяти. Для доступа к дополнительным 80 КБ ОЗУ было внедрено переключение банков памяти (англ. bank switching), таким образом, вся оперативная память разделена на восемь страниц, каждая из которых может быть отображена в верхней части адресного пространства. Подобным образом реализовано переключение между новыми 16 КБ ПЗУ и оригинальными 16 КБ ПЗУ в нижней части адресного пространства[23].

                    Аналогичным образом можно переключать внешнюю флеш память, чтобы она была тупо как обычная память, и такую хуйню можно назвать свопом. При этом оно будет напрямую в адресном пространстве доступно. Ну это конечно если контроллер такую хуйню аппаратно поддерживает, сделать такой контроллер вполне реально
                    Ответить
                    • Вот например
                      https://community.st.com/t5/stm32-mcus-products/how-to-execute-code-from-external-flash-on-stm32f407/td-p/375299

                      >Newer families, such as the 'L4 and 'F7, and the upper-end and lower-end 'F4, have a QSPI controller which can be part of the memory map and code can be run directly from there.

                      >The QSPI support in some of the F4 and F7 parts maps the external memory into the address space of the processor (0x90000000), and from there you can jump to it like any other code, and execute-in-place (XIP)

                      Т.е. внешнюю флешку можно так подключить, и потом менять, аналогично "bank switching" в спектрумах. Вот тебе и своп
                      Ответить
                    • Так а кто будет переключать-то?

                      Смысл виртуальной памяти в том, что:
                      1. Софт ничего не знает про своп. Page fault для него прозрачен совершенно. Он просто читает байты, и течет. А что там, за зановеской, ему грузят в память странички из вторичной памяти -- его не ебет.

                      2. Можно шарить какие-то куски памяти добавляя одну и ту же странчку в разные PTE разныхз процессов. `vdso(7)` же так работает, не?


                      3. ну и так, по-мелочи конфетки всякие: R/O, X^W, COW (который тоже через R/O реализован, и пр)


                      Хуй с ним с 3. А два можно реализовать выдавая процессам оданаковый адрес (процессы память запрашивают через спец прерывание, например).

                      Но как быть с 1?
                      Как сделать так, чтобы софт не отвечал за банк свитчинг, а это делал монитор (так в древние времена называли операционку)?
                      Ответить
                      • > Но как быть с 1?
                        > Как сделать так, чтобы софт не отвечал за банк свитчинг, а это делал монитор (так в древние времена называли операционку)?

                        Можно обрабатывать прерывание при доступе к памяти, которая на флешку не отображена. Если есть некий 64-битный контроллер без MMU, но с возможностью отображения адресного пространства на внешнюю флеш-память, можно ее тупо всю отобразить, с динамической подгрузкой хуйни из флешки во внутреннюю оперативную память будет разбираться периферия. При этом никакого MMU тут формально нет. А если такой умной периферии нет, можно ловить условное прерывание "page fault" и в нем копировать хуйню из флешки в оперативку, потом возвращать управление процессу

                        Можно еще загружать/выгружать состояние процесса из/в флешки, т.е. при переключении с одного процесса на другой, какая-то хуйня (а точнее планировщик процессов) всё останавливает, бекапает состояние всей хуйни текущего процесса и грузит всю хуйню другого процесса.
                        Ответить
                        • А как думаешь, быстро работать будет?
                          Ответить
                          • Так же будет работать. В i386 page fault тоже прерывание и v86 monitor его обрабатывает.

                            Для VM это незаметно, но даже CLI вызывает прерывание
                            Ответить
                            • page fault -- да, а остальные преобразования MMU делает сам.

                              ну блядь, я могу, знаешь, дебаг включить в регистре, и буквально на каждый степ будет у меня прерывание, и я могу там хоть с интернета страничку загружать, но как-бы как-то это не быстро
                              Ответить
                      • > Как сделать так, чтобы софт не отвечал за банк свитчинг, а это делал монитор (так в древние времена называли операционку)?

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

                  https://i.ebayimg.com/images/g/PboAAOSwkQNl5QtF/s-l1600.webp
                  Ответить
                  • >SixPakPlus
                    ебать ты олд.

                    Я думаю что Джей, как носитель математического менталитета, имеет ввиду, что теоретически это реально.

                    А что это будет тормозить как говно, и впринципе будет неюзабельно, его не ебет.
                    Ответить
                    • > носитель математического менталитета

                      Анекдот. Холмс и Ватсон летели на воздушном шаре и заблудились. Спустились, чтобы у кого-нибудь спросить, где они находятся. Холмс спросил у одного мужика и говорит Ватсону:
                      — Нам не повезло, мы наткнулись на ма-те-ма-ти-ка.
                      — Но как Вы это поняли, Холмс?
                      — Он сказал, что мы находимся в корзине воздушного шара.
                      Ответить
                  • Какая прелесть! Оперативка, multi-I/O и даже собственные часики с календарём.

                    А зачем часики воткнули? Как ими пользоваться?
                    Ответить
                    • >А зачем часики воткнули? Как ими пользоваться?

                      У впервых писи не было CMOS.
                      Ты включал комптютер, и устанавливал время. (астольные настройки ты устанавливал джумперами)


                      С этой мандалой шла утилита ASTCLOCK которую надо пихнуть в autoexec.bat.

                      ASTCLOCK eliminates the need for manually
                      entering the correct time and date through the keyboard whenever the PC is turned on or rebooted.


                      В секции 5 всё очень подробно описано
                      https://minuszerodegrees.net/manuals/AST_SixPakPlus_LONG_Users_Manual.pdf

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

                        Вспомнил чувака, который не мог зайти ни на один https-сайт, потому что у него сдохла батарейка в часах, и браузер ворчал о недействительном сертификате, а менять батарейку ему было впадлу.
                        Ответить
                        • Ну впринципе конечно теоретически они могли реализовать BIOS на карте, и тогда при загрузке они могли бы сами устанавливать часы. Но я хз, умел-ли тогда BIOS PC искать другие биосы.

                          Там в мануале написано как записать это говно в autoexec.bat, нашел?

                          >ни на один https-сайт,
                          Kerberos тоже не работает, если у KDC и клиента время отличается (там в тикете таймстемп). Потому в сетях MS типа очень важно запускать NTP с DC.




                          ps:

                          >то можешь перемычками привязать её часики к IRQ и обрабатывать на компе резидентной программой.


                          ну да, это типа "API" этой железки, лол
                          Ответить
                          • > Там в мануале написано как записать это говно в autoexec.bat, нашел?

                            Уже поржал над «copy con autoexec.bat». Типа текстовых редакторов тогда не было. Кто-то ведь так и сделает и затрёт свой autoexec.bat...
                            Ответить
                            • Там написано, что если он есть, то сначала нужно вывести его содержимое над электронно-лучевой монитор!

                              >>>
                              To see the current contents of your AUTOEXEC file,
                              insert the working DOS diskette in drive A: and from the A>
                              prompt, type the following command line:

                              TYPE AUTOEXEC.BAT < enter>

                              >>>
                              Я правда не понял, а потом все их руками ввести еще раз?

                              Типа апенда (>>) не было тогда?


                              >> Типа текстовых редакторов тогда не было.

                              edit.com появился в MS-DOS 5.0, в 1991-м г.


                              А так-то в юниксе тоже файлы иногда через `cat(1)` пишут...
                              Ответить
                              • А edlin когда появился? Он, кстати, был не «стрелочно-курсорным», как edit.com, а «командным». Ты писал команды «найти и заменить» в духе grep и sed.

                                P.S. Edlin поставлялся с DOS с 1980!
                                Ответить
                                • > в духе grep и sed.

                                  Ты знаешь про `ex(1)` и `ed(1)` же?

                                  Вот `ed(1)` заложил моду на все эти команды типа `s/шило/мыло` и `d42`.

                                  Из него вырос sed (namelijk: потоковый ed) и конечно ex режим vimа.
                                  Ну и регулярки конечно тоже.

                                  `ed(1)` был однострочным (как edlin, да), и не требовал умного терминала (собссно ради визуальности на терминалах Джой и изобрел `termcap(5)`)

                                  https://medium.com/predict/using-ed-the-unix-line-editor-557ed6466660
                                  Ответить
                                  • Собственно у ed(1) досовский edlin всё и спиздил. Просто сейчас ed(1) непопулярен, поэтому и не стал его упоминать.
                                    Ответить
                                  • А помнишь Бейсики, которые не Quick Basic / Turbo Basic / Power Basic, а другие, более старые?

                                    У них был интерактивный режим, в котором можно было вводить программу:

                                    LIST — для вывода программы на экран (можно было указать диапазон номеров строк для вывода фрагмента).

                                    RUN — для запуска.

                                    NEW — для удаления программы.

                                    LOAD и SAVE — для загрузки из файла и выгрузки в файл.

                                    <номер строки><пробел><код на Бейсике> — для добавления или замены строки. Если код пустой, строка с указанным номером удалялась. То есть добавление, замена и
                                    удаление производились одной командой!

                                    Такой-то дух ed(1)/edlin! Только возможности были скромнее. Нельзя было раздвигать строки, поэтому обычно их нумеровали с шагом 10, чтобы было пространство для манёвров.

                                    Не знаешь, у каких ещё ЯП такое было? Может, у старого неструктурного Фортрана, в котором были номера строк, как в Бейсике? Или у какого-нибудь Кобола?
                                    Ответить
                                    • Я буквально лично знаю вот этот предмет:

                                      https://vtech.fandom.com/wiki/PreComputer_1000

                                      В нем был как раз такой бейсик.

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

                                      LIST -- выводил все строки
                                      RUN запускал

                                      После каждой строки надо было жать ENTER.

                                      Типичная программа выглядела так
                                      10 PRINT "What is your name?"
                                      20 INPUT $N
                                      30 PRINT "Hello," $N
                                      40 GOTO 10

                                      я забыл правда как была конкатенация строк сделана.

                                      Почему доллар?
                                      Потому что без доллара были инты.
                                      Ответить
                                      • Ты пукаешь. В Бейсике доллары были после идетификатора. Это же не Перл.
                                        Ответить
                                        • Блядь, да.
                                          Ты прав.

                                          Как-то забыл за тридцать семь лет...

                                          ALSO: в перл они попали из авка

                                          В авк -- из шела
                                          Ответить
                                          • В Перле значки перед именем пельменной и означают конь-текст: скалярный, векторный и т. п.

                                            В Бейсике значки ставятся после и означают тип скаляра: % — целое, $ — строка, ! — плавающий питух. В Кубейсике есть & для двойных целых и # для даблов. В некоторых Бейсиках некоторые значки могут отсутствовать, в некоторых, наоборот, могут быть свои дополнения. Но доллар для строк есть всегда. Причём эти значки прицепляются не только к пельменным, но и к именам функций: функция MID$ возвращает подстроку.
                                            Ответить
                                            • P.S. В некоторых Бейсиках, подобно JS, не различаются целые и вещественные. В некоторых различаются.
                                              Ответить
                                            • &gt;&gt;
                                              значки перед именем пельменной и означают конь-текст: скалярный, векторный
                                              &gt;&gt;

                                              Да. Эта хуйня называется SIGIL.

                                              На самом деле, переменные образуют неймспейсы.

                                              "$petuh": я говорю о скаляре петухе. Это может быть строка, число, или указатель.


                                              @petuh : я говорю о массиве-петухе.

                                              %petuh: хеш-петух

                                              &amp;petuh: фунция петух

                                              и пр.

                                              Интересно, что обьращаясь к конкретному элементу массива или хеша надо говорить всё так что это скаляр (в массиве только скаляры лежат могут)

                                              use strict;
                                              
                                              my @users = ('stertor', 'sema');
                                              print $users[1];
                                              Ответить
                                              • А у Бейсика это тип элемента:

                                                10 DIM A$(10)
                                                20 A$(1) = "Петух"
                                                30 DIM B%(10)
                                                40 B%(1) = 42
                                                Ответить
                                              • > в массиве только скаляры лежат могут

                                                А теперь вопрос для знатоков: как сделать многомерный массив?

                                                Я уже догадываюсь, что внешний массив будет массивом ссылок, а на самом внутреннем уровне будут массивы скаляров.
                                                Ответить
                                                • совершенно верно, ведь ссылка это тоже скаляр.

                                                  my @users = ('stertor', 'sema');
                                                  my @langs = ('php', 'delphi');
                                                  my @all = (\@users, \@langs);
                                                  print $all[1][1];
                                                  Ответить
                                            • >функция MID$ возвращает подстроку.

                                              "$" потому что возвращает строку?

                                              Это как "?" у булов в руби
                                              Ответить
                                              • Да. Для функций, возвращающих числа (хоть целые, хоть вещественные) суффикс необязателен, но у функций, возвращающих строку, в Бейсике всегда доллар после имени.
                                                Ответить
                                      • > Но там можно было переписать строку только целиком, и там очень важны были номера строк, чтобы как раз добавлять новые.

                                        Вроде во всех неструктурных Бейсиках так было. Поэтому я и написал, что дух ed был, но возможности скромнее.

                                        Старый неструктурный Бейсик мне сломал мозг: я долго не мог понять, как же в других ЯП пишут без номеров строк.
                                        Ответить
                                      • На самом деле любой классический бейсик такой. У тебя наверняка есть развернутая MS-DOS 5.0 загляни туда, в окошке Immediate тоже самое, хотя уже от номеров строк тогда отошли.
                                        Ответить
                                        • Immediate в Quick Basic не поддерживает всех возможностей интерактивного режима старых Бейсиков, к сожалению. GW-BASIC поддерживает (выход из GW-BASIC по команде SYSTEM, если что).

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

                                            Надмозг, конечно, statements.
                                            Ответить
                              • > edit.com в MS-DOS 5.0
                                Помню багор, когда делал загрузочный диск со всем необходимым, скопировал туда edit.com томущо самый маленький, а на месте оказалось, что edit.com хочет загружать qbasic.exe оверлеем(?) а этот файл у меня естественно не влезал
                                Ответить
                                • У edit.com было несколько версий. Некоторые версии были тупо запускалкой для qbasic.exe, они его запускали с ключом /EDCOM, и Кубейсик притворялся классическим edit.com'ом.

                                  В каких-то версиях DOS был автономный edit.com, но в каких именно, не помню, надо проверять.

                                  Вроде в IBM PC-DOS не было Кубейсика, поэтому там лежал автономный edit.com.
                                  Ответить
                                  • IBM, кстати, вместо Бейсика пропагандировала REXX, в PC-DOS даже command.com был похаканный, он вызывал интерпретатор REXX для rex-файлов, так что их можно было использовать вместо батников.
                                    Ответить
                                    • какакой бейсик был в ибосе 5150?
                                      Ответить
                                      • Ну в 5150 был ROM-BASIC, который стартовал, если BIOS обломался с загрузкой с дисков.

                                        ROM-BASIC можно было вызвать принудительно каким-то прерыванием, но начиная с машин на 80386, его перестали вкладывать, и это прерывание стало выводить: «ROM-BASIC not found, press any key to loose reboot».

                                        А REXX появился в поздних версиях DOS (и в OS/2), где-то к 1990-му году.
                                        Ответить
                                        • с норм редактором, прошу заметить!

                                          https://www.ardent-tool.com/tech/IBM_Cassette_BASIC.gif


                                          Удобно. Если случайно испортилась дискета с досом, то всегда можно загрузить ROM BASIC и написать нужную программу
                                          Ответить
                                          • А ведь сейчас, в эпоху больших флешек и UEFI, наваять что-то подобное не так сложно, как это было в 1980-м...

                                            Почему сейчас не выпускают прошивки с чем-то подобным ROM-Бейсику?
                                            Ответить
                                            • Сейчас всё место ушло с свистелки и пирделки. Ты видел прошивки современных компов? Там и мышка, и выпадющие меню, и чуть-ли не музыка на фоне играет.

                                              Боль-мень прилично разве что в прошивках серверных плат (представляешь, они до сих пор используют слова BIOS и North Bridge, ебанаты*)

                                              *ну, ёбнутые:
                                              https://www.supermicro.com/support/faqs/img_lib/26222.jpg


                                              PS: но если без шуток, просто кому это надо-то? и что туда пихать? питон? зачем? Это же поддерживать сборку Cpython под EFI надо.

                                              Сейчас компов без ОС и не бывает: ты его купил, и там винда сразу
                                              Ответить
                                              • Вообще, бейсик был обязательным атрибутом всем микро-компов начала 80-х: IBM PC, Apple II, Commodore 64, Amiga, и конечно же Sincliar ZX Spectrum.

                                                Даже вон упомянутый выше Pre Compuer 1000 тоже имел бейсик.

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

                                                ну поскольку дети учили BASIC на уроках информатики, то понятно дело именно его туда и надо было пихать.

                                                Года с 1987-го микро-комп уже продавался как бизес-помощник" (текстовые и табличные процессоры типа Lotuis 123, возможность печатать на принтер, носить файлы на дискетах, доступ к compu serve! и пр). И на бейсик всем стало уже похуй.
                                                Ответить
                                                • БК-0010, Amstrad, Atari, платформа MSX (Yamaha и прочее)

                                                  А вот у Агата РОМ-Бейсика не было, но были дискетки с Бейсиком, а также с комплектом «Школьница» (феминитив, гы!), в котором помимо Бейсика были РАПИРА и РОБИК.

                                                  Был микрокалькулятор МК-85 со встроенным Бейсиком:

                                                  https://ru.m.wikipedia.org/wiki/Электроника_МК-85

                                                  Да, процессор был с сеткой команд PDP-11 (как у БК-0010), но был микропроцессором, а не шкафом, как оригинальный PDP-11.

                                                  Корпус спизжен у Casio FX-700P, который тоже был со встроенным Бейсиком, но начинка другая.

                                                  https://commons.m.wikimedia.org/wiki/File:Casio_FX-700P.JPG

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

                                                  «Прекомпьютер» позже стало нарицательным словом, появились похожие игрушки для детей.
                                                  Ответить
                                                  • забыл Amstrad! стыдно, да!

                                                    &gt;Вроде для каких-то игровых приставок были картриджи с Бейсиком

                                                    Было в симпсонах на говнокоде
                                                    https://govnokod.ru/27857#comment749274

                                                    Сюбор
                                                    Ответить
                                                    • Держи немного амстрадовского Бейсика:

                                                      https://youtu.be/XlTCDGBedgU
                                                      Ответить
                                                    • Кстати, у Амиги, C64, MSX и Amstrad в Бейсике были мультимедийные расширения, можно было свистеть и пердеть (прямой доступ к FM-синтезу звука, аппаратные спрайты).
                                                      Ответить
                                                      • В прекомпьютере я пирдел функцией SOUND(freq, time)
                                                        Ответить
                                                    • Мне понравился комментарий про «we need to go deeper». Клон клона...

                                                      Теперь понятно, почему в 90-е в СНГ про NES никто не знал.
                                                      Ответить
                                                      • Я знал про NES от сьебавших в америку родственников, но обычно все знали клон фамикома -- деньди
                                                        Ответить
                                                    • Офигеть, на клаве Сюбора даже «Ё» была на правильном месте (справа от «Ю»), а не в жопе, как на американских раскладках.
                                                      Ответить
                                                    • Ой, да какой Сюбор


                                                      https://en.m.wikipedia.org/wiki/Family_BASIC
                                                      Ответить
                                        • У тебя значит продвинутая система с поддержкой кнопок, я когда начитался Джордейна и попробовал вызвать ROM BASIC, мне написало system halted cli hlt.

                                          Я вообще подозреваю, что ромвасиком на матерях пожертвовали ради встроенного графического сетапа, в AT вроде еще было наоборот и сетап был на дискете.
                                          Ответить
                                  • У IBM не могло быть кубейсика, это же урезанная версия MS Quick Basic и у них редактор назывался ed емнип.
                                    Ответить
                                    • MS продавал же кубасик IBMу, не?

                                      Там еще Гейтс игру про осла написал! Donkey.bas
                                      Ответить
                                      • Не видел такую, играл игру с гориллами.

                                        Да, ты прав, продавали.
                                        Ответить
                                        • которые бананы кидают друг в друга и там надо троекторию выбрать?

                                          куууик)) люблю ее

                                          погугли donkey.bas, она тоже прикольная

                                          Интересно, если я напишу на бейске такую же игру, то станут богатым, как билл гейтс?
                                          Ответить
                                          • Сейчас немножечко другие реалии. Если и напишешь, то надо, чтобы жаваскирт и работала и на компе и на часах с утюгами, обязательно покупки в игре, каждые 2 минуты реклама пассивного сек заработка.

                                            Богатым не станешь, но получишь денюжку и пойдёшь пропьёшь
                                            Ответить
                                          • А твоя мама в совете директоров IBM, как у Билла Гейтса?
                                            Ответить
                                          • Да, она самая. Играли вдвоем в мультиплей даже.
                                            Ответить
                                  • > автономный edit.com
                                    Вот это интересно, потому что майковский редактор большое влияние оказал, сочетания клавиш, интерактивная онлайн-справка, вот это всё.
                                    Ответить
            • DOS. Но в нём некоторые программы умеют в свой своп. Например, «Дос Навигатор» умеет выталкиваться в своп перед запуском внешних программ.
              Ответить
              • А помнишь оверлеи в борланде?
                Чем не своп?
                Ответить
                • Помню.

                  Оверлеи много у кого были, и у всех были собственные механизмы. Возможно, DLL и so изобрели под впечатлением от оверлеев (хотя в обычном режиме DLL и so никуда не выгружают, а держат всё время работы программы).
                  Ответить
                  • Есть чудесная книжка "Мифический Человек-Месяц" Фредерика нашего Брукса.

                    Он там пишет, как IBM в 60-е для OS/360 делало оверлеи. И задается вопросом: а нахуя? Ведь уже тогда всем было очевидно, что будущее за виртуальной памятью.*

                    Позже этот путь повторили мини компьютеры.
                    А после -- домашние тоже.



                    *причину он видит в известном баге в голове программистов. Т.н. "эффекте второй системы", когда программист пытается впинюрить в программу все, что когда-то не успел впендюрить в молодости.
                    Ответить
                    • Т. е. если программист в молодости не успели никому впендюрить хуй, то у него в программе будут сплошные хуи?
                      Ответить
                      • давно чернухин программистом стал?
                        Ответить
                      • Ну если программист озабочен и всем шлет свои хуи, то скорее всего в личной жизни у него и правда не очень
                        Ответить
                • То другой своп, труповижон накладывал ненужную кучу в EMS
                  Ответить
        • Будешь смеяться, но я видел в одном смартфоне на Андроиде своп на рамдиске. Нахрена? А он с зожатием deflate, как у гзипа. На экстренный случай, если что-то в оперативку не влезает, то оно зожимается на лету и запихивается в этот своп.

          Забыл, как драйвер называется.

          Из-за этой хуйни брат умер «Яндекс-карты» запускаются три минуты. Пока ждёшь запуска, чтобы посмотреть расписание автобусов, твой автобус уходит.

          Пиздец, короче. Реальная история. Я не тролль.
          Ответить
          • Ещё эта хуйня жрала заряд аккумулятора, как Гаргантюа.
            Ответить
      • охуясе, вот это call convenstion

        slow call, по аналогии со fast call
        Ответить
        • Можно ещё хранить в веб-сервисе.
          Ответить
          • но лучше всего на стриммере
            Правда, придется при каждом вызове метода обращаться к оператору, призывая его звоночком чтобы он перестал пить чай, и заправил кассету
            Ответить
            • господь с тобой, для этого есть робот - кассеты в стример заправлять
              Ответить
              • > робот
                Оператор может дешевле обойтись если скорость не нужна...
                Ответить
                • нет, не так
                  оператор нужен, чтобы записанные LTO кассеты забирать и увозить в банковское хранилище

                  недавно со мной рядом сокрушались, что когда-то была ещё и возможность архивировать на оптику, было очень прельстиво - сразу несколько физически разных носителей для ценных бекапов использовать - а сейчас уже болванки умерли, грусть печаль
                  Ответить
            • Стример похоже сегодня ещё хер купишь новый. Или не?
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • Чот не думаю, что на пятидюймовки кто-то щас делает бекапы
                  Ответить
                  • Я тоже не думаю. Я просто бекаплю на пятидюймовки и теку. Именно поэтому я за «PHP».
                    Ответить
                    • А я бекаплю телок.
                      Ответить
                      • В ближайшем лесу?
                        Ответить
                        • Хм. А я даже не думал об этом. Обычно использовал ковер и реку.
                          Ответить
                          • Как потом из реки бекап восстанавливать если вдруг понадобится?
                            Ответить
                            • Все мои бэкапы где-то в океане
                              Все мои надежды у побережье рек
                              Все мои данные на дне озер
                              Ответить
                              • Если долго сидеть у реки,
                                Можно увидеть,
                                Как по ней проплывает
                                Бэкап твоего врага.
                                Ответить
                        • Кстати лучше всего бэкапить в бетоне - лучше сохраниться.
                          Ответить
                          • В арктическом льду. Через тысячи лет что-нибудь да останется.
                            Ответить
                            • Как ты попал в этот тред?
                              Ответить
                              • Вылез из арктического льда
                                Ответить
                                • Залесь обратно. Рано разморозился, в 19 году было лучше чем сейчас.
                                  Ответить
                  • Как раз иконув приложкния влезет
                    Ответить
    • Выдержка из hcreate(3p)
      RATIONALE
             None.
      
      FUTURE DIRECTIONS
             None.
      Ответить
    • test comment
      Ответить
    • bormand, слушай, ты же силен в ACPI?

      Объясни дураку, почему в SSDT написано что встроенная в процессор карта сидит на шине PCI?
      Вообще если читать эту таблицу (или читать device manager / devices by connections в винде или dmesg на bsd) то можно увидеть что прямо из ACPI растет PCI и на ней сидят все, включая PCI-E.

      Зачем?!
      Ответить
      • > прямо из APCI растёт PCI
        Если не туплю, то это PCI Express Root Complex (раньше назывался PCI Host Bridge, линукс его так и показывает).

        > встроенная карта сидит на PCI
        Вай нот? Чтобы операционки её видели и конфигурили как нормальный PCI девайс, удобно же.
        Ответить
        • Сделал твой анус своим персональным девайсом, проверь.
          Ответить
        • >>Если не туплю
          Ну, тут я понимаю, только он не "раньше так назывался" а так он назывался в PCI: контроллер PCI сидел в северном мосту (позднее в мемори хабе) и назывался PCI Host Bridge (мост между хостом(процессором) и PCI).

          У PCI-Expressа подобный "корень" называется root complex и сидит (уже довольно давно) на кристалле.

          Тем не менее рут комплекс косплеит PCI host (мой sl):
          Device (PCI0)
                  {
                      Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */)  // _HID: Hardware ID
                      Name (_CID, EisaId ("PNP0A03") /* PCI Bus */)  // _CID: Compatible ID


          >>Вай нот?
          Значит, шоб не быть голословным -- вот он
          Scope (_SB.PCI0)
              {
                  Device (GFX0)
                  {
                      Name (_ADR, 0x00020000)  // _ADR: Address

          (кстати, что такое _ADR? Device 2 в терминах PCI?). Теперь, чего я собссно не понимаю:

          1) мне казалось что ACPI нужен чтобы найти корень, а там уже опросить шину специальным PCI способом (с помощью интерфейса того самого рута/бриджа).
          Можно представить что он реально сидит на PCI-Express (внутри кристала) но тогда накой хуй его хардкодить?? Его комплекс бы и так нашел. Выходит, что на PCI-Express его правда нет.

          2) Но если его нет, то как у него может быть device number?
          Разве не рут комплекс должен "знать" топологию своей шины?
          Его обманули и заставили верить чот у него там еще девайс сидит?
          А если я отключу его методом из ACPI то у меня и моник погаснет?

          3) Как фирмварь знает про мой встроенный видео? Или она в момент POSTа узнала про мой проц, и НАЛЕТУ ПРОПАТЧИЛА ACPI таблицу?

          --
          Вообще на каких форумах (можно англицких) про это лучше всего пиздеть? 99% "комптюетрщиков" нихуя не понимаю про ACPI:(
          Ответить
          • > ACPI нужен чтобы найти корень
            Ещё ради управления питанием, кулерами и прочим говном. Ну и чтобы найти адреса всякой мелочи типа ACPI таймера или легаси железок, которые не видно в PCI.

            > Его комплекс бы и так нашел.
            Ну описали и описали. Тебе мешает? По-любому оно и по нормальной енумерации находится.

            > НАЛЕТУ ПРОПАТЧИЛА ACPI
            SSDT это вроде как раз и есть динамический довесок к DSDT.

            > нарисовать деревце
            Эти таблицы же не совсем таблицы, это ебучий байткод (ASL), который исполняется ядром оси. И список девайсов, который будет описан в этой "таблице", может зависеть от версии операционки(!) (у меня так линукс на ноуте умер из-за того, что виндой 8.1 прикинулся).
            Ответить
            • >>Ещё ради управления питанием, кулерами и прочим говном.
              Разумеется. Но я сейчас не про термаильные зоны, а про построение дерева устройств и их методы.

              >>Ну описали и описали. Тебе мешает?
              Я пытаюсь понять: действительно-ли физически видеядро находится по ту сторону PCI-Express?
              Если я попрошу у руткомплекса сделать энумирацию -- он действительно мне найдет GFX0?

              >>оно и по нормальной енумерации находится.
              ..а тада зачем пейсать?

              может, ради того чотбы навести всякие методы типа
              Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels

              ?

              Ну типа через PCI же их не экспортнешь.

              >>это вроде как раз и есть динамический довесок
              тогда ок, тогда я все понял

              >>операционки
              да, это когда там написана проверка что Os Windows2009, я понимаю.

              Вот тебе говнеца из моей таблички
              ElseIf (_OSI ("Windows 2012"))


              Окей, идею построения дерева нахуй.


              А есть хороший юзерфрендли туториал кроме спеки и доки по ACPICA?

              Мне чото стало интересно лучше понять это говно
              Ответить
            • ps:
              о, aida64 engineer умеет деревце по acpi
              Ответить
        • зы: а есть утилитка чтоб нарисовать деревце по DSDT файлу? Может, написать такую?
          Ответить
      • да пошел ты нахуй, хрюкаешь блядь
        Ответить
    • Кто знает структуру LSM tree???
      Ответить
    • Можно уникальный префикс использовать для нужных мап.
      Ответить
    • Коллеги написали настолько запутанный код, что сами в нем запутались, и сделали рейс.

      Пришли другие коллеги, не стали разбираться, и навалили сверху говна, гостылей, и sleep(3).

      Рейс затаился.

      Что-то во вселенной поменялось, и рейс проснулся опять, и валит тесты.

      Теперь уже никто не может понять, что происходит. Наступила технологическая сингулярность.
      Ответить
    • А вы знаете кто такая Ася Казанцева?
      Она вот тут интересное написала
      https://pbs.twimg.com/media/GyV5JjZXcAADROi?format=jpg&amp;name=medi um

      Мне конечно стало очень интересно: как это Ася будет заниматься сексом с наскомыми. А с лягушкой как?
      Ответить
      • У Аси Казанцевой стокгольмский синдром: она писала, как её выебали в детстве, поэтому она за педофилию. Возможно, по этой же причине она не против, чтобы её выебал козёл.

        Какая-то ТП с ЧСВ овер 9000, ОБВМ и СПГС, считает себя всезнайкой и пишет книжки ни о чём.
        Ответить
    • https://x.com/s_baskak/status/1953769395429212509
      Ответить
    • Как же я тебя понимаю, Линус
      https://www.phoronix.com/news/Linux-6.17-RISC-V-Rejected
      Ответить
    • Трамп хочет заключить с Путиным писдил. Как думаете, писдил получится?
      Ответить

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