1. Pascal / Говнокод #13306

    +138

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    В этой статье я расскажу как сделать дополнительный поток в программе.
    
    Приступим.
    
    1. Создаём форму
    2. Кидаем на форму кнопку со вкладки Standart
    3. Кидаем на форму Memo со вкладки Standart
    
    Переходим в код и после
    
    private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    Пишем следующие:
     
    TVANSThread=class(TThread) 
      Private
        Protected
          Procedure Execute; override;
      Public
        Constructor Create(CreateSuspended: boolean);
      end;
    
    
    Далее кликаем по строчке Constructor Create(CreateSuspended: boolean); и жмём сочентание клавиш Ctrl+Shift+C
    
    После чего должно появится следующие:
    
    
    constructor TVANSThread.Create(CreateSuspended: boolean);
    begin
    
    end;
    
    В эту процедуру вписываем следующею строчку:
    
    inherited Create(CreateSuspended);
    
    Прокрутим чуть ниже и увидим процедуру TVANSThread.Execute;
    Она выглядит так:
    
    procedure TVANSThread.Execute;
    begin
    
    end;
    
    В неё вписываем следующий код:
    
    for i:=0 to 10000 do Form1.Memo1.Lines.Add(IntToStr(i))
    
    И не забываем о переменных:
    
    var i:integer;
    
    Далее кликаем по кнопке и вписываем следующий код:
    
    TVANSThread.Create(false);

    Анальный урок.
    Автор - анальный учитель с сайта www.vans-soft.ru/

    Запостил: Stertor, 04 Июля 2013

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

    • >>И не забываем о переменных:
      да, несомненно,как же без них...
      Ответить
    • > В этой статье я расскажу как сделать дополнительный поток в программе.
      > В эту процедуру вписываем следующею строчку
      > жмём сочентание клавиш Ctrl+Shift+C
      > Прокрутим чуть ниже

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

        если это Дельфи, то я думаю что вы зря так волнуетесь - обезянам дали гранату с уже вытянутой чекой. в VCL только главный поток имеет право доступатся к гуям - все остальные должны делать через специально анально - извратный метод (имя уже не помню) который жутко тормозит, потому что посылает сообщение главному потоку что бы тот дернул метод который хочет доступатся к гуям.
        Ответить
        • показать все, что скрытоРазве в делфи есть что-то не специально анально - извратнное? Или что-то, что не тормазит? Или кто-то пишет на делфи будучи не обезъяной? Уж лучше плюсы, жаба, сишарп. Даже похапэ и питон, хоть жабаскрипт - даже анально - извратнное как говно тормазящие руби смердящие - паскаль2, нахрен. Фу.
          Ответить
          • показать все, что скрыто>>Уж лучше плюсы, жаба, сишарп. Даже похапэ и питон, хоть жабаскрипт - даже анально - извратнное как говно тормазящие руби смердящие - паскаль2, нахрен. Фу.

            Ведите себя прилично, или я забуду, что Вы-царь.
            Ответить
          • ух ты. вот это инновация, заявить, что Ruby - говно. И это о языке, созданном японцем (Юкихиро Мацумото), который вложил все красоту и искусство японской письменности в ЯП - именно с целью разработать самый прекрасный язык.
            Ответить
            • > все красоту и искусство японской письменности
              Да, это точно. Увидев иероглиф без контекста не поймешь не только то, что он значит, но и даже то, как его прочесть... А еще все можно записать кучей способов :) Руби очень похоже на японский...
              Ответить
              • а еще и каллиграфия.
                Ответить
              • а в Руби мне нравится, что там богатая стандартная библиотека. то, что на Си придется писать целый метод с циклами и ветвлениями, то на Руби записывается в одно предложение.
                Ответить
                • По сравнению с Си и у PHP будет большая библиотека.
                  Ответить
                  • И даже у lua, там регекспы есть, прикиньте? Больше ничего там нет.
                    Ответить
              • >Увидев иероглиф без контекста не поймешь не только то, что он значит, но и даже то, как его прочесть...
                А японец, увидев в первый раз русское слово без контекста, сразу типа поймет, как его читать и что оно значит?

                >А еще все можно записать кучей способов
                Какой это кучей? Есть ромадзи (транслит), есть стандартная запись на кандзи+кана, иногда дополняемая фонетическими подсказками (фуригана, также известная как "руби"). Какие еще способы вы знаете?

                В итоге, как мне кажется, попытка провести аналогию между японским языком и Ruby немного провалилась.
                Ответить
                • Если я, как русский, не знаю значения какого-то русского слова, то я хотя бы могу его прочитать вслух, ну с точностью до ударения. Могу спросить у друга, что оно значит, могу вбить его в гугл и узнать значение...

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

                  P.S. Да, я в курсе, что в тех же газетах на редких иероглифах они пишут фонетические подсказки. Но что если автор подумал, что этот иероглиф всем известен? Или в данном тексте никто с фуриганой не парился?
                  Ответить
                  • Японцы всё же чаще используют кану, а для китайского есть http://dict.youdao.com/. Щёлкаем по эмблеме карандашика в строке ввода и рисуем мышкой иероглиф.
                    Ответить
                    • > всё же чаще используют кану
                      Да давно бы уже отказались от балласта кандзи, и перешли на кану/ромадзи... Хотя оно к тому и идет, где-то я слышал, что как бы не половина взрослых японцев разучилась писать кандзи.
                      Ответить
                      • Привычка — вторая натура. Нельзя просто так взять и выкорчевать традицию.

                        Спасает кандзи от вымирания слепая вера в то, что так китайцам будет понятна хотя бы половина слов, хотя японский и китайский даже не родственники. Например, иероглиф 人 (похожий на лямбду) в обоих языках обозначает людей, хотя в китайском читается как «жень», а в японском как «хито».

                        Похожая инерция есть и в языках программирования. Все знают, что какая-нибудь конструкция для анскильных питухов или что реализована через жопу, однако сохраняют её реализацию и практику применения «для совместимости».
                        Ответить
                        • Омукуаммо, хень хихихи) сень якуо хасям хита сямамото

                          хих-хи-хи) хи-хикс.
                          Ответить
                          • Мне одному кажется, что в этой фразе границы между словами не соблюдены?
                            Ответить
                            • Вы правы. Нужно удалить из строки все пробелы.
                              Ответить
                        • > слепая вера в то, что так китайцам будет понятна хотя бы половина слов
                          Миф об обратной совместимости ;)
                          Ответить
                  • >А что делать японцу, который увидел где-нибудь незнакомый ему иероглиф?
                    Не нужно было прогуливать школу. Эта проблема решается упреждающим обучением.

                    А если пораскинуть мозгами, то я могу назвать пару способов решения проблемы донесения неизвестного иероглифа без передачи рисунка:
                    1. Описать иероглиф словесно - я более чем уверен, что составные части глифов имеют общепринятые названия, вот из википедии: "К примеру, кокудзи 峠 (то:гэ, «горный перевал») состоит из знаков 山 (гора), 上 (вверх) и 下 (вниз)." - как можно видеть, знаки "вверх" и "вниз" довольно очевидны по начертанию даже для европейца.
                    2. Сказать, на какой знакомый иероглиф похож. Если есть хоть какой-то контекст, то этого может быть достаточно.
                    Ответить
                    • Есть несколько разных словарей: по корням, по чертам, по ключам. Гуглим список ключей. Например,
                      http://www.nihongo.aikidoka.ru/kanji_key.html

                      ... И ничего не понимаем. Ключи могут не иметь ничего общего с образованными от них иероглифами (на первый взгляд). Например, ключ № 85 в упомянутой таблице.

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

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

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

              Ну растыкал он операции, которые в сишке делают 5-ю символами на 25символов - что это дало? Извращения вида @ и прочего. Зачем? Пошел по пути паскалятинки, аля: Животное не может запоминить, что '=' присваивание, а '==' - равно. А давайтека мы сделаем ':=', '===' и прочее. А потом оказывается, что ':+=' выглядит как говно и давайтека мы оставим '+=' и прощай логика.

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

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


                  >ты вполне можешь писать и на Руби в Си-стиле (разве что библиотеки разные), практически один к одному перенося алгоритмы.
                  Не могу. Логики в языке нет. Синтаксис говно. Синтаксические конструкци избыточно говно. Всё тормазит. Я ограничен. У меня нет нормального конпелятор(интерпритатора) - а есть ущебное говно. Весь язык создан для того, чтобы его юзали идоты - он логичен только для идиотов. Половина libc тоже создана для идиотов( отчасти благодаря ущербным ОС типа маздайки), но у меня посиксапи, и посикслиб( вчастности линукслиб).


                  И да, на руби можно писать лишь в псевдоси-стиле. И этот псевдоси будет ещё более псевдо, чем в жабе.
                  Ответить
                  • > говорю говно на базовые синтаксические конструкции языка.
                    они там настолько базовые, что их там почти и нет. Руби позволяет писать так, как ты хочешь. там даже операторы - это методы (например, 1+2 это значит 1.+(2) )

                    > Синтаксис говно.
                    голословное кукарекание. приведи примеры

                    > Синтаксические конструкци избыточно говно.
                    тогда сишка еще избыточнее и говнистее

                    > Я ограничен.
                    наконец, признался. ты не знаешь язык, поэтому нихрена написать не можешь.

                    > интерпритатора
                    интерпрИтатора нет, но интерпретатор языка справляется со своей задачей

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

                    > И да, на руби можно писать лишь в псевдоси-стиле.
                    конечно, для этого есть си. в стиле си на руби, с его мощью, пишут только питухи вроде тебя.

                    ты угадал только в одном
                    > тормазит
                    только потому, что Руби - интерпретируемый язык, он проигрывает компилируемым в нативный код языкам.
                    но поверь ты мне, если у тебя все тормАзит - то, скорее всего, Руби тут ни причем, а это ты открыл в ИЕ 200 вкладок.
                    Ответить
                    • Одно ко-ко-ко, аргументов нет.

                      Методы - говно. Нету в программировании никаких методов - есть add r/m r/m. На более низком тоже add. Но только в питушарской руби есть методы на интех.

                      Ну, давай мне запили strchrnull() на руби, я поржу.

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

                      >толсто-зелено, и неаргументировано.
                      Напиши на нём что-то сложно и производительное. Это и есть задача не для идиота.


                      >только потому, что Руби - интерпретируемый язык, он проигрывает компилируемым в нативный код языкам.
                      Да хоть конпелятор для него запили - он проиграет в говно. Он проигрывает интерпритируемым ЯП в хлам. Вон плюсы тоже конпелируемые, но сливают сишке в хлам. Любимые отговорки питухов.

                      Возмём жабаскрипт - тормазит как говно. Меняем стиль написания кода с питушарского на сишный - опа уже не тормазит, ибо си-стайл поддаётся оптимизации, а питухстайл нет. Ты хоть 100конпеляторов напиши для сопливой типизации и кастов струки в инт на каждом шагу - будет тормазить как говно.
                      Ответить
                      • вот лишь бы пиздануть. даже неинтересно уже
                        Ответить
                        • показать все, что скрытоИбо ты слился на днище, не представляешь даже почему твоя руби тормазит и кукарекаешь бредом, который к теме не относится.

                          Говоришь питушачьими шаблонами, аля "не компилированная - тормазит". Да сделайт ы сишку интерпритируемой - тормазить не будет, ибо это сишка. А все твои интерпритируемые языки давно компилируемые, но тормазят как говно.
                          Ответить
                • >ты вполне можешь писать и на Руби в Си-стиле (разве что библиотеки разные), практически один к одному перенося алгоритмы.
                  Фу, блядь, фу, нахуй! Специально для таких уебков придумали термин "питоничненько", чтобы их стебать.
                  Ответить
              • > Животное не может запоминить, что '=' присваивание, а '==' - равно.

                Есть ещё опечатки, не распознаваемые компилятором. Правда питушок, не писавший ничего больше 50 строк, не знает, что это такое и каковы последствия.
                Ответить
                • Реально? Есть? Гцц распознаёт все, но ты же питушок, который нормального конпелятора в жизни не видел.

                  Ошибки возможно только в условиях, а пацаны отделяют условия дру от друга. Отделяя условия - пацан видит свои словия и шанс обишки минимален.

                  Так же, пацан перебирает в условиях в основном указатели, а писать ptr == ptr - ущербанизм, который никто никогда не пишет.


                  Я даже не могу придумать случаев, где в реальном коде( не коде анскильных питухов типа тебя, которые не знают даже синтаксиса своего ЯП - я уж не говорю о семантике и глубинных особенностях конпелятора/платформы и прочего) можно написать = вместо ==.

                  В 95% случаев сравненеи едёт с константой, а юзать дальше значение, вернувшие выражение (a = 10) не имеет смысла, ибо оно возвращает константу и всегда истинно(кроме нуля). Поэтому конпелятор это везде увидит и напишет тебе - смысла в твоём выражении нет - ты питух.

                  Остальные 5% случаев питухи не юзают.
                  Ответить
                  • > Реально? Есть? Гцц распознаёт все, но ты же питушок, который нормального конпелятора в жизни не видел.

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

                    > В 95% случаев сравненеи едёт с константой

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

                      Питух кукарекает, а примеров привести не может - удиви меня питух, примерами своими.


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

                        Ты сам же сказал про if(a=b), только твоя отмаза что "это ненужно" выглядит жалко, больше похоже на признание слива.
                        Ответить
                        • main.c: В функции «main»:
                          main.c:33:2: предупреждение: присваивание, используемое как логическое выражение, рекомендуется [-Wparentheses]
                          if(a = b)
                          ^

                          Дальше?
                          Ответить
                          • Ты пользуешься предупреждениями?
                            А разве у тебя код от них не покрывается сплошняком жёлтым?
                            Ответить
                            • У меня ничего не покрывается. Ты питух о5 слился, ибо гцц показывать всё умет, а то, что не умеет - никто не юзает.


                              Так же, я пишу код валидный для гнуси, с чего он должен давать ворнинги? Мой код никогда ворнингов не даёт.
                              Ответить
              • superhackkiller1997, знаком ли тебе вкус спермы?
                Ответить
              • Ну-ну, не ссорьтесь, девочки.
                Ответить
          • и ладно уж это было бы сказано про шарпик или жабу - они настолько пересахарены, что где-то и горько.
            ладно уж питон - я мне тоже не нравится оформление блоков табуляцией.
            Ответить
            • Да хоть как они были бы пересахарены - они основанны на Си. И их синтаксис до сих пор выглядит не как говно, хотя уже как говно - но до паскалятинки ещё очень далеко.

              Питон хоть и паскалятинка - но там нет бегинов/ендов больше, чем самого кода. Вот возьми любую паскаль байду - почитай количесво символов в begin/end/function и прочих идентификаторов - т.е. того, что в сишке записывается одним символом - этих символом будет больше, чем занимает сам код программы.
              Ответить
              • > они основанны на Си
                пиздеж и провокация, от Си так только похожий синтаксис и конструкции (чтобы сишники не охуевали)

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

                  >пиздит и не краснеет. уж что-что, а питон создавался именно как легкочитаемый язык с минимумом ключевых слов и всяких скобочек. и именно потому символов там гораздо меньше, чем в аналогичном Си-коде.
                  Мне похрен как он там создавался - его синтаксис упращённая паскалятинка. Я и написал, что хотя это и паскалятинка - там нет миллионов избыточных символов, зачемт ы вторишь мне?

                  Нет, там символов не меньше. Такое страшное говно, месиво и кишки. Ну выпили в питоне скобочки из всяких выражений - что это дало? Кон стал копактней, красивей? Нет - он стал неразборчивой writeonly портянкой.
                  Ответить
                  • > а не либц,
                    там нет libc.so

                    > что хотя это и паскалятинка
                    > там нет миллионов избыточных символов
                    я писал именно про избыточность бейсиков и паскалей.

                    > Кон стал копактней, красивей?
                    конечно, они не отвлекают от сути.
                    Ответить
                    • >там нет libc.so
                      Ты тупое животное - там нет либц, но есть либруби, питух. И для тебя слив-питушка язык и есть эта либруби.

                      >я писал именно про избыточность бейсиков и паскалей.
                      Ты начал кукарекать, что питон типа не избыточный, ноя назвал его паскалятинкой, которая избыточна.


                      >конечно, они не отвлекают от сути.
                      Реально? Открой любой код на питоне - лютое говно. На миллиард строк нитко даже не подумает на нём что-то писать, на сотюно тысяч тоже, даже на десяток уже ссыкатоно.
                      Ответить
                  • >Фитон
                    > Нет - он стал неразборчивой writeonly портянкой.
                    Да ты ебанулся, байтодрочер. Иди такты считай, сука, готов спорить, что именно твое байтоебство и есть writeonly.
                    Ответить
                  • > Нет - он стал неразборчивой writeonly портянкой.
                    Вот-вот. Везде будет или скобочка, или богомерзкий end, а в питоне - только наблюдательность читателя.
                    Не дай Бог увидеть код с копипастами, где пробел чередуется с табом. В случае сишки это можно исправить хоть в блокноте, а тут - ад.
                    Ответить
                    • Питон на смесь пробелов с табами ругнется и правильно сделает.
                      Ибо нехуй.
                      Ответить
                      • Ладно, в 3м может и пофиксили. Уже лучше.
                        Но во втором-то можно новый уровень начать с нового типа отступов. (см http://ideone.com/79Rpn0)
                        Ответить
                        • Можно в одном отступе сделать один пробел, а в следующем - 7. Но нормальные люди этого не делают, а на смешивание пробелов с табами матерятся IDE.
                          Ответить
                          • Ты хорош словоблудить, а подумал ли ты, сколько сил и энергии отдали Андерс Хейлсберг со товарищи, чтобы изваять из такого низкоуровневого языка, как ассемблер этот чудесный компилятор? Небось не спали ночами. А ведь кроме разработки есть еще и семья. Деньги в расчет не беру - это не главное. Хороший программист получает удовлетворение не столько от оплаты труда, сколько от осознания, что то, над чем он работал - не быдлокод, а программа, скроенная на совесть.
                            Ответить
                            • Ты питух анскилльный, кто такой этот Хейлсберг?
                              Ответить
                              • Запятую забыл, после слова "ты", обращение обособляется. Поищи в интернете, коли такой тупой.
                                Ответить
              • > И их синтаксис до сих пор выглядит не как говно, хотя уже как говно

                Лол, именно в этом и есть говно, в том, что какого-то хуя они унаследовали некоторые самые уёбищные моменты синтаксиса.
                Впрочем, красноглазому питушку, мнящему себя хацкером, всегда кажется, что всё, что от сишки - то хорошо, ведь это же сишка фап фап фап.
                Ответить
                • показать все, что скрытоСишка самый красивый синтаксис из всех. Он не избаточный как паскалеговно - он не кровавое месиво, как питон. Если где избыточность в нём есть - то она реально несёт пользу, ибо увеличивает красивость, читаемость и логичность выражений.


                  Меня не интересует мнение животного, который не осилил свой ЯП.
                  Ответить
                  • Сишка избыточна.
                    Уёбищный switch
                    Уёбищное struct type varibale;
                    Уёбищный unsigned
                    Уёбищное объявление указателей на функции, как будто нарочно пытались жопу на голову натянуть.
                    Даже объявление массивов уёбищное.
                    Ответить
                    • показать все, что скрыто>Уёбищный switch
                      Лучше, чем в питухпаскалятинки.

                      >Уёбищное struct type varibale;
                      Питух не осилил тайпдеф? Пишут структуры как ты только питухи типа тебя. typedef struct {} type_t; type_t var;

                      >Уёбищный unsigned
                      Чем? Питух не осилил stdint? Иди проспись, питушара. uintsize_t.

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

                      Есть typeof(f) f_ptr;

                      >Даже объявление массивов уёбищное.
                      int b[] - куда ещё проще? Давай покажи поскалячье говно - я поржу. И да, пацаны ны юзают массивы, питух.
                      Ответить
                      • Сквозной проход в свитче по дефолту, из-за чего приходится писать брейки, это нормально?
                        Ответить
                        • Да, это фича. Просто некотоыре питухи не осилили таблицы, указатели на функции и таблицы переходов - поэтому и юзают свич там, где он не нужен.
                          Ответить
                          • Собирать таблицы переходов вручную — это нормально?
                            Ответить
                            • Да. Это круто, перфоманстно и понтово.

                              Что потвоему лучше - написать 4 функции по 30строк, а потом массив указателей, либо писать свич на 200строк?

                              uint64_t op_plus(uint64_t a, uint64_t b) {
                                return a + b;
                              }
                              uint64_t op_mul(uint64_t a, uint64_t b) {
                                return a * b;
                              }
                              uint64_t op_minus(uint64_t a, uint64_t b) {
                                return a - b;
                              }
                              uint64_t op_div(uint64_t a, uint64_t b) {
                                return a/b;
                              }
                              int main(void) {
                                typedef uint64_t(*op_type_t)(uint64_t, uint64_t);
                                const op_type_t op[255] = { ['+'] = op_plus, ['-'] = op_minus, ['*'] = op_mul, ['/'] = op_div };  
                                fprintf(stderr, "%lu", op['*'](123, 123));
                              }


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

                            Это кукареканье какое-то, тут даже отвечать на это ничего не надо.
                            Ответить
                          • В сишке их надо осиливать? У меня для тебя плохие новости: в питоне они официально рекомендованы на замену свичу.
                            Ответить
                      • > Понятней и занимает места меньше, чем в питушачьем паскале.

                        Про "понятнее" - кукарекать не надо, ладно? Правило улитки, вся хуйня, ага...
                        Меньше места занимает - да, школьники любят на это дрочить.

                        > int b[] - куда ещё проще?

                        Да хотя бы int[] b. А то какого хуя название переменной внутри объявления типа?
                        Ответить
                        • ко-ко-ко питушок слился.

                          >Да хотя бы int[] b. А то какого хуя название переменной внутри объявления типа?
                          У тебя инт есть тип. Тип всегда один. int[10] b: Это типа новый тип 10интов, типа которого есть б? Нет питух int b[10] - б стостит из 10 интов. Ну и да, int a, b[2], c[100];.

                          Ты питух несёшь полное говно, лижбы оправдать свою анскильность - придумываешь тысячи говно, игнорируешь 80% моих кооментов. Не отвечаешь на всё. Глупая сливашка-букашка.
                          Ответить
                          • int[10] - это тип.
                            А int b[10] - это хуйня.

                            > игнорируешь 80% моих кооментов

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

                              Ладно, приходи как поумнеешь. Иди к своим дружкам, которыет оже говно под ведроид написали - там все профи, а тут не кукарекай. Анскильный гений одного говна ненужного.
                              Ответить
          • а вот про бейсик и паскаль подтверждаю - слишком многословны при скромных возможностях
            Ответить
            • Чтобы тебе написать функцию - тебе надо написать в 30раз больше символов, чем на сишке. Но это не самое страшное - паскаль не имеет даже 2-3% возможностей сишки.

              Чем надо было думать, чтобы создать это? Это как сделать молоток, который весит 50килограм - боёк которого решето. Возможно гвоздь со шляпкой диаметром 3-4сантиметра ты забьёшь - но остальные ты будешь забивать через жопу.

              Сишка же - это набор молоточков - от ювелирных - до тысячитонных. А истинная сишка - вообще материал, из которого можно создать молоток любого вида.
              Ответить
              • зато эти языки похожи на естественный английский, и типа потому они подходят как академические, для вбивания основ программирования и алгоритмов со структурами данных в дубовые головы нерадивых студентов
                Ответить
                • Выходит, что SQL с точки зрения Царя — полное говно, т. к. в нём нет скобочек, зато предписания гораздо больше похожи на предложения английского языка, чем в любом Паскале.
                  Ответить
                  • показать все, что скрытоДа, по мнению царя скул ещё большее говно, чем паскаль( хотя основа скула - паскальподобный синтаксис). Псевдоязык был придуман для бездарных писателей, которые являются пародией на программитов. Для бездарного интерпрайз зброда, задача которого писать говно для субдешечки.
                    Ответить
                  • ну да, этот язык задумывался в стиле "дай мне это таким-то", 1:1 к англ. языку
                    Ответить
                  • > Выходит, что SQL с точки зрения Царя — полное говно
                    Язык для домохозяек же
                    Ответить
                • "естественный английский" и программирование никак не связаны. Основ программированния в паскале нет никаких - какие нахрен основы, если его логика не ложится на железо?

                  Если человек не отринул паскаль с первого взгляда на него - он уже с 99% не будет программистом никогда - максимым заедушной макакой. Программист-дворник - он метёт, бабло гребён - но нихране не понимает что он и как метёт.
                  Ответить
                  • > "естественный английский" и программирование никак не связаны.
                    но господа преподаватели считают иначе, поэтому мы имеем "99%" "заедушных макак"
                    Ответить
                • ЕМНИП, то Паскаль и задумывался как академический. Так что все сходится.
                  Ответить
              • > Но это не самое страшное - паскаль не имеет даже 2-3% возможностей сишки.

                лолшто

                > Чтобы тебе написать функцию - тебе надо написать в 30раз больше символов, чем на сишке

                лолшто
                По статистике сишка самая многословная. Только статистика составлялась не для твоего питушиного говна, а для нормальных проектов.

                > Сишка же - это набор молоточков - от ювелирных - до тысячитонных. А истинная сишка - вообще материал, из которого можно создать молоток любого вида.

                Я бы понял, если бы ты сказал это про Лисп, но про сишку... Ты полный долбоёб.
                Ответить
                • >лолшто
                  Выкати мне код с перфомансом сишки на паскале. Потом выкати мне код, который будет работать без рантайма. В том же ОС. Какой код будет работать в кернелспейсе твоей ОС? Паскаль не обладает возможностями для написания быстрого кода - неспособен на быструю обработку информации вообще - это основа сегодняшнего кода. Так же он не способен на низкоуровневое общение с хардварной частью - неспособен работать без рантайма - тотальное говно.

                  >лолшто
                  char * strchrnullll(char * str, int c) {
                    while((*str != 0 && *str != c) && *(++str));
                    return str;
                  }


                  Аналог на паскале, питух.

                  >Только статистика составлялась не для твоего питушиного говна, а для нормальных проектов.
                  Состовлялось для говна, которое писали питухи типа тебя, которые нихрена не осилили сишку.


                  >Я бы понял, если бы ты сказал это про Лисп, но про сишку... Ты полный долбоёб.
                  Лисп написан на сишке, питух. Ядро лиспа на лиспе - тоже написанно на сишке. А так же лисп неможет нихрена - производительный код на лиспе где? Про лисп машины не кукарекай. ОС на лиспе где? Нету. Не породию на ОС на бинарном лиспе, а реальную.

                  memcpy на лиспе мне пожалуйста дайте, как опировать из кернел в юзерспейс? Указатели мне запили. А где симды, нити? Поисксапи? Как прочитать файл? Как заммапить файл? Как сохранить контекст?
                  Ответить
                  • > Выкати мне код с перфомансом сишки на паскале

                    На тебе софтрендер, тут где-то в теме:
                    http://www.gamedev.ru/code/forum/?id=138759
                    упирается в память во внутреннем цикле, сишка бессильна

                    > Потом выкати мне код, который будет работать без рантайма.

                    Какого рантайма? Борландовского? Лол, у меня всё работает без рантайма, вот жеж ты питух, нихуя не знаешь.

                    > Аналог на паскале, питух.
                    function strshrnullll(str:PChar; c:char): PChar;
                    begin
                      Result := str;
                      while (Result^ <> #0) and (Result^ <> c) do 
                        Inc(Result);
                    end;

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

                    > Состовлялось для говна, которое писали питухи типа тебя, которые нихрена не осилили сишку.

                    Так ты ж ваще нихуя не написал полезного, откуда тебе знать статистику-то?

                    > Лисп написан на сишке, питух.

                    И чё.

                    > memcpy на лиспе

                    Нахуй тебе memcpy, ты питух анскильный, если тебе нужен memcpy.
                    Ответить
                    • Кстати, я один обратил внимание на char * str, int c? В оригинальном коде чар зачем-то сравнивается с интом.
                      Ответить
                      • sizeof('a') - для этого и фигачили.
                        Ответить
                        • Почему не (char * str, char c) или не (int * str, int c)?

                          Почему разные типы?
                          Ответить
                          • Патамучто исторически так: sizeof(char) == 1, а sizeof('a') > 1.

                            Для данной функции это не актуально, но так завещали деды. Ты можешь передалть её тело под юникод - и будет работать. Для этого её определение так и запилил в либц.
                            Ответить
                            • В дельфятине принято использовать в одном контексте pchar и char либо PWideChar и WideChar, т. е. явно указывать, нужна однобайтовая кодировка или юникод.

                              Для юникода в сишке есть wchar_t* wcschr (const wchar_t*, wchar_t), а сигнатура strchr — говно, потому что основана на отживших своё традициях и легендах.
                              Ответить
                              • показать все, что скрыто>В дельфятине принято использовать в одном контексте pchar и char либо PWideChar и WideChar, т. е. явно указывать, нужна однобайтовая кодировка или юникод.
                                Животное, ты понимаешь, что такое utf8? В этом ваша проблемы - вы питухи нихрена не понимаете, и паскаль ваш писали животные, которые так же как и вы ничего не понимаете.

                                Мой char *, int - может юзатся для utf8, а твоя питушня будет давать сотни оверхедов в зависимости от типа утф"а - запилена для маздайской ереси.

                                Я буду писать 75гигов текста, а ты питух 400. Конечно - это же так круто, когда питух несёт херню и нихрена не понимает.

                                >Для юникода в сишке есть wchar_t* wcschr (const wchar_t*, wchar_t), а сигнатура strchr — говно, потому что основана на отживших своё традициях и легендах.
                                Не для юникода, а для говна. Никто в здравом уме этим говном не пользуется. Это маздайская ересь.
                                Ответить
                                • А теперь внимание! Для кого в сишечке <mbstring.h>, в котором названия всех функций начинаются с букв mb, явно указывающих, что ожидается многобайтовая кодировка типа utf-8?
                                  Ответить
                                  • В какой такой сишке?

                                    unsigned char* _mbsset (unsigned char*, unsigned int); Ты это видишь? Такая же сигнатура, что и обычных стрингов - потому, что придумали это не питухи типа тебя, и которые придумали паскаль, а вменяемые человеки.

                                    char * f(char * p, int c); - сигнатура подходит для всех видов НОРМАЛЬНОЙ кодировки. Для питушни же надо что-то менять.
                                    Ответить
                                    • http://ideone.com/GSP78d

                                      Почему strchr("Trolololololo", 'xyzl') возвращает lololololo?
                                      Ответить
                                      • >'xyzl'
                                        http://ideone.com/KsuBoF
                                        Result: runtime error.
                                        Ответить
                                      • Потомучто ты животное, не? С чего он должен возвращать что-то иное? Ну и да, питушок как всегда слился и начал гнать пургу.

                                        Патамучто 'xyzl' - 32бита, последние из которые x, а начальные l.
                                        Ответить
                                        • Тогда какого хрена объявлять int, когда функция использует только младший байт, а остальное отправляет в канализацию?

                                          А я отвечу, какого: в синтаксисе K&R все необъявленные типы считались интом. И для тех питухов, которые забывают #include, в сигнатурах стандартных функций использовали инты там, где нужно и где не нужно, чтобы программа хоть как-то слинковалась и запустилась.
                                          Ответить
                                          • >Тогда какого хрена объявлять int, когда функция использует только младший байт, а остальное отправляет в канализацию?
                                            Патамучто ты питух написал много символов - а надо 1. А теперь вставь туда утф8 символ и смени тело на твой mb - получишь профит. Сигнатура не поменялась - а всё работает. Оперхеда нет.

                                            А питушки типа тебя будут страдать фигнёй.

                                            Питух - все переменные итак инты, ибо это регистры - а регистры на твоём питух i386 интовые.
                                            Ответить
                                            • Возможность апгрейда до mbXXX не аргумент. Мало ли до чего апгрейдить придётся? На всякий апгрейд не предугадаешь. Кроме utf-8 другие кодировки бывают.

                                              Инт здесь только потому, что в старой сишке он был по умолчанию, а прототипы функций не требовались. В C++ наконец-то додумались требовать наличие прототипа.

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

                                              Однако, что делать, если в компиляторе по умолчанию char беззнаковый, а int знаковый?
                                              Ответить
                                              • >Возможность апгрейда до mbXXX не аргумент. Мало ли до чего апгрейдить придётся? На всякий апгрейд не предугадаешь. Кроме utf-8 другие кодировки бывают.
                                                Кроме утф8 нет других кодировок - всё говно.

                                                >Инт здесь только потому, что в старой сишке он был по умолчанию, а прототипы функций не требовались. В C++ наконец-то додумались требовать наличие прототипа.
                                                Ну замени на чар - вызови это для инта. Что изменится? Ничего. Его там оставили как идеальную сигнатуру.

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

                                                >Однако, что делать, если в компиляторе по умолчанию char беззнаковый, а int знаковый?
                                                Какая разница какой он, глупышка. За знак в них отвечают совершенно разные биты. Конпелятору похрен какие ты там знаки юзаешь, как и процессору.
                                                Ответить
                                                • Какая разница? В этой функции всё равно, а в функциях сортировки разница будет, потому что сравнение знаковых байтов и беззнаковых будет давать разный результат.

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


                                                    Она была написана лишь потому, что её писали питухи вроде тебя.
                                                    Ответить
                    • >Какого рантайма? Борландовского? Лол, у меня всё работает без рантайма, вот жеж ты питух, нихуя не знаешь.
                      Паскалевского. Любого. И да, и за кучей твой код сам следит? И дллки сам подкружает - вот жешь молодец.

                      >^ <> #0
                      Какие конструкци, я даже тебе фору дал и написал != 0, хотя его вообще можно не писать. (Result^ <> #0) == (*str) - как крута, такая немногословность. Что мы получем - в 10раз тормазнее, в 10раз больше символов.


                      >Так ты ж ваще нихуя не написал полезного, откуда тебе знать статистику-то?
                      Бомже2дигрулька уровня лабы в недовузе под ведроид - это жет полезно.

                      >И чё.
                      И то, что я могу на сишке написать всё, что угондо - включая свой лисп. Ты не можешь.

                      >Нахуй тебе memcpy, ты питух анскильный, если тебе нужен memcpy.
                      Я же написал - как ты будешь из кернел в юзерспейс копировать? И да, потомучто в лиспе нет мемкопи - он ниначто, кроме баловства не способен.
                      Ответить
                      • > Что мы получем - в 10раз тормазнее

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


                          Ну вот давай, иди в соседний тред - собери тот код, напиши его на паскале - сравни перфоманс.
                          Ответить
                          • Какой именно код собрать?
                            Ответить
                            • http://govnokod.ru/13280#comment185679
                              Ответить
                              • Нужна полная постановка задачи.
                                1. Что делать с точками, находящимися на границе и по углам? Оставить, как есть, или считать среднее для 3-4 соседей?

                                2. Проход у нас один или несколько?
                                Ответить
                                • Соседи за границами - равны нулю.


                                  Проходов мильярд.
                                  Ответить
                                  • >Соседи за границами - равны нулю. >Проходов мильярд.
                                    А тут и считать нечего, после мильярда проходов все элементы будут = 0.
                                    Ответить
                                    • Реально? Питушок даже не осилил флоат. Иди подучи, потом приходи. Ты же кукарекал что-то про меня.
                                      Ответить
                      • > Какие конструкци, я даже тебе фору дал и написал != 0, хотя его вообще можно не писать. (Result^ <> #0) == (*str)

                        Где тут 10 раз, питух? В моём коде только раскрыты кое-какиесишные умолчания, которые часто осложняют жизнь.
                        Ответить
                        • Ну напишешь анрольный вариант на 64битных интал - будет в 10раз больше. 13 vs 4 - больше в овер 3раза.

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

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

                    В своё время для 16-битного TP 7.0 энтузиасты писали функцию умножения 32-битных чисел через 32-битные регистры (ага, код с префиксом размера). Перфоманс на 386+ повышался.
                    Ответить
                    • >Пишешь свой SYSTEM.PAS. Все функции реализовывать не обязательно, можно реализовать только сокращённый комплект хоть на асме, хоть на чём угодно, что в объектные файлы компилируется.
                      Это всё говно, аля напиши либц. Паскаль избыточно говно и если я в сишке могу тупо не юзать либц - нам паскале без юза либпаскаль - ты не напишешь нихрена.

                      Если на сишке я могу написать себе мемкопи, то на паскале нихрена, либо она будет тормазить как говно. Именно поэтому никто для паскаля рантайм на паскале и не пишет - всё это написанно на си и дёргает либц.

                      В делфятне есть встроенный ассемблер, но это говно, а не ассемблер, причём говно времён динозавров.

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

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

                        Неужели Царь никогда не видел исходников гцц?

                        А в известных реализациях Object Pascal всю эту питушатину из компилятора перенесли в библиотеку, в модуль System. Не всё ли равно, где её держать, в рантайме или в компиляторе?
                        Ответить
                        • >Но с другой стороны, если в сишке операция со сложными объектами, откуда появится код? Да, его вставит сишный компилятор из себя. А как он там реализован? В виде готового массива машинных инструкций или на ассемблере, под каждую платформу индивидуально.
                          В сишке нет никаких сложных объектов - в том и суть сишки. Сложнее фора там ничего нет.

                          >Неужели Царь никогда не видел исходников гцц?
                          Лучше бы не видел.

                          >А в известных реализациях Object Pascal всю эту питушатину из компилятора перенесли в библиотеку, в модуль System. Не всё ли равно, где её держать, в рантайме или в компиляторе?
                          Из сишки можно просто писать код, который будет зависеть только сам от себя. Ты контроллируешь всё. В паскале там не прокатит - в этом и пичаль, ибо всё через жопу.
                          Ответить
                          • Нельзя контролировать разве что в Бейсике.

                            А между Си и потомками Паскаля особой разницы в контроле нет. Директивы и простые операции есть и там, и там.
                            Ответить
                            • Только суть в том, что ты можешь нормально реализовать всё, что тебе неужно на Си. А в паскале реализация всего этого будет тормазить как говно, ибо фичей нет, синтаксис говно, избыточно - всё говно.

                              Вон питух написал уже strchrnull, потратив в 5раз больше символов. Которая тормазит как говно, я имею фичи - могу заменить char * на __v16qi *. Где это в тухлой паскалятинки? Где? Нихрена нет - всё говно.

                              Нормальных инклюдов нет, нормальных операций нет - нормальных фич нет. Где мой свич, где мои нормальные указатели? Где всё? Нихрена нет.
                              Ответить
                              • Вот во что ассемблируется код Тараса в Дельфи на i386:
                                0000                          L$1:
                                0000    EB 01                     jmp         L$3 
                                0002                          L$2:
                                0002    40                        inc         eax 
                                0003                          L$3:
                                0003    8A 08                     mov         cl,byte ptr [eax] 
                                0005    84 C9                     test        cl,cl 
                                0007    74 04                     je          L$4 
                                0009    3A D1                     cmp         dl,cl 
                                000B    75 F5                     jne         L$2 
                                000D                          L$4:
                                000D    C3                        ret
                                И отчего это должно тормозить?
                                Ответить
                                • Хотябы вот это: inc eax

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

                                  Я могу написать в 5, 10, 20 раз быстрее - ты нет. Это твой предел.
                                  Ответить
                                  • Выхлоп gcc -O2:
                                    _strchrnullll:
                                    	pushl	%ebp
                                    	movl	%esp, %ebp
                                    	movl	8(%ebp), %eax
                                    	movl	12(%ebp), %ecx
                                    	movb	(%eax), %dl
                                    	testb	%dl, %dl
                                    	jne	L4
                                    	jmp	L2
                                    	.p2align 2,,3
                                    L7:
                                    	incl	%eax
                                    	movb	(%eax), %dl
                                    	testb	%dl, %dl
                                    	je	L2
                                    L4:
                                    	movsbl	%dl, %edx
                                    	cmpl	%ecx, %edx
                                    	jne	L7
                                    L2:
                                    	leave
                                    	ret
                                    Я ещё не стал показывать, какую питушню gcc генерирует с атрибутом __fastcall.
                                    Ответить
                                    • Меня не интересует втоя маздайка и питушарский 386-й.

                                      .cfi_startproc
                                      	cmpb	$0, (%rdi)
                                      	movq	%rdi, %rax
                                      	jne	.L3
                                      	jmp	.L2
                                      	.p2align 4,,10
                                      	.p2align 3
                                      .L5:
                                      	addq	$1, %rax
                                      	cmpb	$0, (%rax)
                                      	je	.L2
                                      .L3:
                                      	movsbl	(%rax), %edx
                                      	cmpl	%esi, %edx
                                      	jne	.L5
                                      .L2:
                                      	rep ret
                                      	.cfi_endproc


                                      Гцц тут тупанул, но и функцию эту так пишут только питухи - он не знает куда оптимизировать - каждый переход, оба сразу. Но в гцц есть фича для этого
                                      И да, питух - приведённый тобой код аналогичен твоему.
                                      Ответить
                                      • Претензия к inc вместо add ..., 1?

                                        В остальном же не вижу улучшений: зачем-то два разыменования указателя (%rax), когда можно было разыменовать один раз.

                                        > Гцц тут тупанул
                                        > Но в гцц есть фича для этого

                                        Так покажите эту фичу и как ей пользоваться.
                                        Ответить
                                        • >В остальном же не вижу улучшений: зачем-то два разыменования указателя (%rax), когда можно было разыменовать один раз.
                                          Гцц оптимизировал оба перехода - .l5 будет работать быстрее без мува. .l3 он объединил с мувом для того, чтобы самая функция на нулях выполнялась быстрее. Поэтому пацаны никогда в функциях не реализуют проверку на пустые строки.

                                          http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html __builtin_expect()

                                          Это надо изначально писать нормально, а не как питухи - тогда и проблем не будет.
                                          Ответить
                                          • .L5:
                                            	addq	$1, %rax
                                            	movsbl	(%rax), %edx
                                            	test    %edx, %edx
                                            	je	.L2
                                            .L3:
                                            	cmpl	%esi, %edx
                                            	jne	.L5
                                            .L2:
                                            А если так, то чем будет хуже?
                                            Ответить
                                            • > А если так, то чем будет хуже?
                                              Hint: цикл начинается с .L3.
                                              Ответить
                                              • Прозевал. Можно добавить ещё один mov перед циклом. Или это будет уже некошерно?
                                                Ответить
                                                • > Можно добавить ещё один mov перед циклом.
                                                  Тогда уж просто войти в цикл не на L3, а со второй строчки после L5, где movsbl.
                                                  Ответить
                                                  • Тогда и cmpb $0, (%rdi) можно будет выкинуть за ненадобностью. Большой потери производительности от удлинения цепочки в случае пустой строки не будет, поскольку такой вариант — редкость.

                                                    Возникла другая мысль. А не использовать ли нам пиписюнчик LODSB? Звучит заманчиво: загрузка и инкремент одной инструкцией. Правда, вместо %rax придётся использовать %rsi.
                                                    Ответить
                                                    • Отвечу сам себе. LODSB в данном контексте использовать не стоит. Очень странно: ещё на первых Пентиумах LODSB и LOOP были быстрее эквивалентных цепочек из пары инструкций, а на современном железе почему-то стали медленнее. А на AMD64 даже RET рекомендуют писать в два байта, из-за чего появляется нелепое REP RET (его можно увидеть в примере superhackkiller1997).

                                                      Вывод: микрооптимизация — трата времени, поскольку в очередной реализации процессора её могут поломать.
                                                      Ответить
                                                      • > на современном железе почему-то стали медленнее
                                                        Возможно из-за декодера команд. Если мне не изменяет память, он загружает блоки по 16 байт, и за 1 такт может раскодировать не более 6 команд. И если набивать команды слишком плотно, на всю катушку юзая inc/loop/lodsb и прочую мелкую херню - упадет пропускная способность декодера.
                                                        Ответить
                              • > Вон питух написал уже strchrnull, потратив в 5раз больше символов.

                                Ты не умеешь считать.
                                Ответить
                        • > Да, с одной стороны, невозможность компилировать более-менее серьёзный код без модуля System рвёт мозг.

                          Мне не рвёт.
                          Ответить
                • > По статистике сишка самая многословная.
                  Лолшто? Паскаль многословней сишки хотя бы из-за всяких begin, end, procedure, function и прочего многословного говна, лол.
                  > Только статистика составлялась не для твоего питушиного говна, а для нормальных проектов.
                  Давай пруфы на свою статистику.
                  Ответить
                  • показать все, что скрыто>Лолшто? Паскаль многословней сишки хотя бы из-за всяких begin, end, procedure, function и прочего многословного говна, лол.
                    Суть в том, чтое сли сложить все эти "begin, end, procedure, function и прочегее" в одну строку, то эта строка будет длинне самого кода. В этом и пичаль.

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

                      Ебать, этот питух, не писавший нихуя полезного, меня учит.
                      Ответить
                    • Давай ещё сторонние библиотеки для сишки ругать за то, что там длинные идентификаторы. Насколько короче был бы код, если бы функции назывались a, b, c, d, e etc.
                      Ответить
                      • Дак такие же индентификаторы у тебя и в паскале - вон пример с strchrnull тебе выше.

                        Твои аналогии говно. Имена - должны быть осмысленные, но заменять {} на бегин и енд - расточительство, как:
                        pchar strchrnullll(pchar str, char c) {}
                        заменять на:
                        function strshrnullll(str:PChar; c:char): PChar; begin end;

                        Говно. Имена те же самый - места в 2раза больше.
                        Ответить
                  • > Лолшто? Паскаль многословней сишки хотя бы из-за всяких begin, end, procedure, function и прочего многословного говна, лол.

                    Статистика бралась по строкам кода. Длина ключевых слов это вообще хуйня, не имеющая никакого значения.
                    Сишка сливала именно из-за низкоуровневости и необходимости на каждый чих делать закат солнца руками.
                    Ответить
                    • > Статистика бралась по строкам кода. Длина ключевых слов это вообще хуйня, не имеющая никакого значения.
                      Это и есть та самая многословность, и, самое главное, читабельность кода.
                      > Сишка сливала именно из-за низкоуровневости и необходимости на каждый чих делать закат солнца руками.
                      Это да, собственно, для задачи нужно выбирать адекватные инструменты. Сишка хороша для ядер ОС, компиляторов, задач, требующих производительности.
                      Паскаль не может ни в них, не в высокоуровневые задачи.
                      Ответить
                      • >читабельность
                        Нечитабельность, в случае паскаля. Фикс.
                        >ни в них, ни в
                        Еще фикс.
                        Ответить
                        • > Нечитабельность, в случае паскаля. Фикс.

                          Скажешь, что сишка читабельнее Паскаля? Тогда ты тупой фанатик, тут даже аргументировать бесполезно.
                          Ответить
                          • Читабельнее для кого? Для англоговорящей домохозяйки? Возможно. Вот только мозгу гораздо легче парсить (, ), { и }, чем procedure/function/begin/end.
                            Ответить
                            • http://govnokod.ru/13071

                              [](){} — это что? Это мозгу легко понять?
                              Ответить
                              • Это не Си, питух. В контексте лябд из плюсов - это понятно [] - обощённое имя, () - аргументы как в функции, {} - тело.

                                Скобочки запили для захвата, ибо можно было lambda(){}, но не кошерно.

                                Особо лучше ты не придумаешь.
                                Ответить
                              • Это скобочки. Понятно? А вообще мозгу ничего не понятно без предварительной подготовки, в т.ч. русский язык. Но парсить фигуры и формы мозгу легче, чем фигуры и формы букв, сами буквы и их значение.
                                Ответить
                            • > Вот только мозгу гораздо легче парсить (, ), { и }, чем procedure/function/begin/end.

                              Фанатики такие фанатики.
                              Ответить
                              • Т.е. аргументов нет? Ну ок.
                                Ответить
                                • Какие могут быть аргументы, когда мне заявляют абсурдную хуйню?
                                  Ответить
                                  • Еще раз спрашиваю:
                                    >Читабельнее для кого? Для англоговорящей домохозяйки?

                                    Ты не согласен с тем, что мозгу легче парсить формы, чем слова? Может быть ты вообще без подсветки кодишь?
                                    Ответить
                                    • Ты не согласен с тем, что читать слова легче, чем парсить скобочки и крючёчки, в которые ещё вглядываться надо?
                                      Ответить
                                      • А в буквы слов begin, end, procedure, function, конечно же, не надо вглядываться, в них нет крючочков и вообще их не существует.
                                        Ответить
                                        • Елси ты не занл, то цлеые совла праисть вгдязлом оенчь постро, ибо мозг на это зчотеан нсоталько мщоно, что хаватет своло влёт, даже когда бкувы втурни пеерсатвелны.
                                          Ответить
                                          • Вот только компилятор, боюсь, тебя не поймет.
                                            Слова -- это названия переменных и функций, { и } парсятся быстрее их и мозг их не пытается интерпретировать как названия переменных и функций. То же самое с операторами. Не, ну а чо, почему не писать 2 addition 2 вместо 2+2, мозг же на слова заточен.
                                            Ответить
                                            • > Вот только компилятор, боюсь, тебя не поймет.

                                              Мы говорим о читаемости, а ты уходишь от темы, слив.

                                              То, что компилятор не понимает тебя в случае опечатки - это плюс.

                                              > Не, ну а чо, почему не писать 2 addition 2 вместо 2+2, мозг же на слова заточен.

                                              Потому что арифметику в первом классе учили все и это обозначение всем понятно, в отличие от (+ 2 2)
                                              Ответить
                                              • > Потому что арифметику в первом классе учили все и это обозначение всем понятно, в отличие от (+ 2 2)
                                                А вас программированию и английскому не учили? С пеленок это все знали? Что значит begin, end, procude, var?
                                                Ответить
                                                • begin,end,procedure,var - это английские слова. Английский должны знать все, такой современный мир.
                                                  Ответить
                                                  • var -- английское слово?
                                                    >это обозначение всем понятно
                                                    Мне не надо, чтоб было _всем_ понятно. Мне надо, чтобы заглянув в исходник, я не сломал глаза об procudure var integer begin if then else end end.
                                                    Ответить
                                                    • А мне надо, чтобы я не сломал глаза об [](){}()
                                                      Ответить
                                                      • Как будто в паскале нету [] и (), лол.
                                                        Ответить
                                                        • Зато в Паскале нет такого:
                                                          typedef int (*func)(int);

                                                          Смотришь и думаешь, чем первая пара скобок отличается от второй.
                                                          Ответить
                                                    • >>>я не сломал глаза
                                                      Вырви себе глаза, тогда и ломать не придется. Развели спор на пустом месте...
                                                      Ответить
                                        • В Паскале function — это всегда объявление функции (либо типа, возвращающего указатель на функцию).

                                          А в Си круглые скобки могут обозначать вообще что угодно. Приходится гадать, что в данном случае какие скобки обозначают.
                                          Ответить
                                          • >А в Си круглые скобки могут обозначать вообще что угодно. Приходится гадать, что в данном случае какие скобки обозначают.
                                            В русском языке запятая тоже может означать вообще что угодно. Точка тоже.

                                            Тебе, анскильному питуху, надо гадать. Скобки в сишке значат только одно - функция, если они преставленны в идентификатору. В остальных случаях - они значат то, что значат в матвырениях - а именно разделение порядков операторов.

                                            Если тебе это не ясно - ты животное.
                                            Ответить
                                      • Т.е. ты слепое, анскильное животное. А ты не считаешь, что надо запятые заменить на слово запятая? А зачем запатая, точки? Знаки вопроса? Давай писать как в паскале.

                                        Тарас запята ты тире питух точека Понял вопросительныйзнак. Да, да, это лучше, чем то, что есть.
                                        Ответить
                                        • > А ты не считаешь, что надо запятые заменить на слово запятая?

                                          Нет, не считаю. Потому что мозг успешно натаскан на небольшое вкрапление знаков препинания в тексте.
                                          Ответить
                                          • А так не будет натаскан. Профит!
                                            Ответить
                                          • Лужа. В сешке {} не больше, чем запятых в русском языке. Как так? Логикад ала брешь?
                                            Ответить
                                            • Только стоят эти {} в сишке не так, как запятые в русском, а как-то оторвано и незаметно.
                                              Ответить
                                              • Так может ты и программировать на литературном русском будешь?
                                                Ответить
                                                • Я бы с радостью, но проблемы с раскладками напрягают.
                                                  Ответить
                                              • В твоём питушарском стиле да, в норальном f() { - как запятые в руском.

                                                Закрывающая скобка выполняет ролько точки и перевода строки.
                                                Ответить
                      • > Это и есть та самая многословность, и, самое главное, читабельность кода.

                        Именно.

                        > Сишка хороша для ядер ОС, компиляторов, задач, требующих производительности.

                        Именно, и для чего-то более большого сишка уже начинает мешать.

                        > Паскаль не может ни в них, не в высокоуровневые задачи.

                        Для байтоёбства в Паскале есть все нужные инструменты и возможности.
                        Что касается высокого уровня, то уровня лиспа тут и близко нет, но шаблоны, перегрузка операторов, автодеструкторы, замыкания в нём есть, хотя и весьма неудобны.
                        Ответить
                        • > Для байтоёбства в Паскале есть все нужные инструменты и возможности.
                          Почему я не вижу ни одного используемого ядра ОС/компилятора/чего-то еще значительного на нем? Видимо, потому что байтоебство на нем не удобно и просто прикручено сбоку.
                          > Что касается высокого уровня, то уровня лиспа тут и близко нет, но шаблоны, перегрузка операторов, автодеструкторы, замыкания в нём есть, хотя и весьма неудобны.
                          Где есть? В standart pascal я такого не вижу. Может быть ты про какие-нибудь делфи?
                          Ответить
                          • > Почему я не вижу ни одного используемого ядра ОС/компилятора/чего-то еще значительного на нем?

                            Потому что инфраструктура важнее любых фич языка.

                            > В standart pascal я такого не вижу.

                            Давай обсудим, чего нет в C79 тогда что ли.
                            Ответить
                            • > Потому что инфраструктура важнее любых фич языка.
                              Фичи? В паскале? Не смеши. Между прочим, я был прав, там даже union'ы без извращений нельзя сделать.
                              >Давай обсудим, чего нет в C79 тогда что ли.
                              Не путай версии с диалектами. Про какой диалект ты говорил?
                              Ответить
                              • > Между прочим, я был прав, там даже union'ы без извращений нельзя сделать.

                                Это в сишке union извращённые, а в Паскале самые обычные.

                                > Не путай версии с диалектами. Про какой диалект ты говорил?

                                Про самый современный.
                                Ответить
                                • > Это в сишке union извращённые, а в Паскале самые обычные.
                                  Ололо. Может покажешь, как в ваших неизвращенных юнионах сделать разбиение long на lopart + hipart?

                                  > Про самый современный.
                                  Дай ссылку на стандарт. Или хотя бы на компилятор, который его поддерживает.
                                  Ответить
                                  • > Ололо. Может покажешь, как в ваших неизвращенных юнионах сделать разбиение long на lopart + hipart?

                                    Открой windows.pas, посмотри что ли.
                                    Может ты расскажешь, как это сделать в сишке без хуйни с промежуточной анонимной структурой?

                                    > Или хотя бы на компилятор, который его поддерживает.

                                    Дельфи-2009
                                    Ответить
                                    • >windows.pas
                                      Не нашел такого файла у себя.
                                      >Дельфи-2009
                                      Т.е. Delphi == pascal? Все ясно, лол.
                                      Ответить
                                      • > Не нашел такого файла у себя.

                                        Погугли.

                                        > Т.е. Delphi == pascal? Все ясно, лол.

                                        Это достаточно современный диалект Паскаля, что не так?

                                        Слышь, сливалка, ответь про то, как в сишке делать юнионы без промежуточных говноструктур.
                                        Ответить
                                        • Ну я так могу заявить, что в сишке тоже есть ООП, шаблоны, исключения и пр, потому что кресты -- достаточно современный диалект Си.
                                          > Погугли.
                                          Windows.pas is a Pascal/Delphi unit which contains the Windows-specific API declarations. It is the Pascal equivalent to windows.h, used in C.
                                          Что сказать-то хотел?
                                          Ответить
                                          • > Что сказать-то хотел?

                                            Показать, как union в Дельфи пишутся.
                                            Ответить
                                            • Ты так и не показал, а высрал какой-то вендохедер. Зачем он мне?
                                              Ответить
                                    • >без хуйни с промежуточной анонимной структурой?
                                      Вычислять каждый раз с & 0x...? Заебешься же.
                                      Ответить
                                      • Сишкопроблемы.
                                        Ответить
                                        • Я имел в виду оверхед, да плюс приведение к int. Ни в паскале, ни в делфях, как я понимаю, ты не можешь сделать так:
                                          typedef union {
                                              long long value;
                                              struct { int lopart, hipart; } parts;
                                          } foo;
                                          Ответить
                                          • type foo = record
                                            case boolean of
                                             false: Value: int64;
                                             true: lopart, hipart: Integer;
                                            end;
                                            Ответить
                                            • А теперь покажи, как их доставать оттуда.
                                              Ответить
                                              • var a: foo;
                                                begin
                                                a.value = 100000000;
                                                writeln(a.lopart);

                                                покормил.
                                                Ответить
                                                • Ок, это не отменяет убогости реализации, плюс не занесено в стандарт. Как быть с больше, чем двумя элементами в юнионе, покажешь? case Integer of? И тоже скажешь, что нету оверхеда?
                                                  Ответить
                                                  • Можно подумать, что в с++ все по стандарту. Нет двух одинаковых компиляторов, все извращаются по-своему.
                                                    Ответить
                                                    • Увы, с 1998-го года стандарт для C++ существует: ISO/IEC 14882:1998. Детали реализации могут отличаться (и действительно отличаются, особенно реализация объектного программирования), но синтаксис юнионов в разных реализациях C/C++ одинаковый.

                                                      К сожалению, для Object Pascal нет официального стандарта, но его реализуют Turbo Pascal, Delphi, Free Pascal, Virtual Pascal, TMT Pascal (Framework Pascal), WDSibyl, Oxygene, MIDletPascal, DWScript, PascalABC.NET и частично GNU Pascal.

                                                      С Паскалем сложилась странная ситуация: многие компиляторы реализуют вариант языка, который не стандартизован, а компиляторы Standard Pascal (и Extended Pascal) можно назвать экспериментальными.
                                                      Ответить
                                          • Бля, открой windows.h же, там же показано, как это делаетсядохуя примеров, ты же даже нагуглить один модуль и посмотреть не можешь, ты предпочитаешь вместо этого бездоказательно пиздеть.
                                            Ответить
                                            • У меня нету windows.h, у меня гента. Да и .h указывает на то, что это просто сишный хедер. Зачем ты его суешь мне?
                                              Ответить
                                              • > У меня нету windows.h

                                                *window.pas
                                                Погугли его.

                                                > у меня гента

                                                Красноглазая школота детектед с достоверностью 95%
                                                Ответить
                                                • > Погугли его.
                                                  Уже не нужно, ниже привели пруф убогой реализации юнионов.
                                                  > Красноглазая школота детектед с достоверностью 95%
                                                  Чини детектор, луркоёб.
                                                  Ответить
                                          • В стандартном Паскале требовалось дополнительное поле — дискриминант, которое показывало, какой вариант используется. В Турбо Паскале и в его наследниках дискриминант отменили, поэтому запись с вариантными полями стала эквивалентом сишному юниону. Да, в ТП и в Дельфи можно писать case Integer of и пофигу, чему равны метки кейса.
                                            Ответить
                                            • Говорю же, реализация через жопу + оверхед.
                                              Ответить
                                              • Где там оверхед, guest? Вот в сишке да, через жопу, нужно заводить анонимную структуру.
                                                Ответить
                                                • Все эти case boolean of -- оверхед над юнионом.
                                                  Ответить
                                                  • Нет никакого оверхеда, нет никакого поля boolean. это просто синтаксис, как уже заметил inkanus-grey.
                                                    Ответить
                                                    • Это именно оверхед и костыли. Что делать, если больше двух элементов в юнионе?
                                                      Ответить
                                                    • Это тролль, причем довольно упитанный. Плевать ему на парадигму, ему лишь бы напитаться здесь.
                                                      Ответить
                                                  • ебааааать учи матчасть же
                                                    (ответ гуесту)
                                                    Ответить
                                                    • Просвети, что делать, если больше двух элементов в юнионе? case Integer of? И опять типа нету оверхеда?
                                                      Ответить
                                                      • Именно так. Да и типы меток могут не совпадать, можно написать case boolean of
                                                        'a':
                                                        ...
                                                        'b':...;
                                                        end;

                                                        Да-да, можешь теперь поржать над нелогичным синтаксисом. Но у синтаксиса тоже есть свой смысл - если мы все-таки хотим запилить поле селектора, мы можем написать
                                                        case field: AnsiChar of
                                                        'a':
                                                        ...
                                                        'b':...;
                                                        end;
                                                        хотя этот field и не будет ничего контролировать.
                                                        Ответить
                        • >> Сишка хороша для ядер ОС, компиляторов, задач, требующих производительности.

                          >Именно, и для чего-то более большого сишка уже начинает мешать.

                          /thread
                          Ответить
                          • Не большого, а высокоуровневого. Или компиляторы и ядра -- это что-то небольшое?
                            Ответить
                    • >>Сишка сливала именно из-за низкоуровневости и необходимости на каждый чих делать закат солнца руками.

                      Убило наповал))) Молодец. Ты его рвешь)
                      Ответить
            • Standard Pascal действительно говно. Но только где сейчас найти компилятор для него, когда всякие gpc, fpc и прочая дельфятина основана на более навороченном Object Pascal?
              Ответить
              • gpc вроде как раз основан на нем. Но он мертв.
                Ответить
                • В gpc попытались объять необъятное: реализовали Standard Pascal, Extended Pascal и Object Pascal, между которыми можно переключаться, плюс добавили свои расширения.

                  Есть несколько компиляторов Extended Pascal, но ими никто не пользуется, а уж Standard Pascal сейчас днём с огнём не найти.
                  Ответить
        • VCL не нужна. Пиши на WinAPI, будь мужиком!
          Ответить
          • показать все, что скрытоЭто ещё хуже, чем делфи. WinAPI на 95% состоит из паскалятинки. Я такого говна отродясь не видал.
            Ответить
            • Доказательства в студию!
              Ответить
            • >>WinAPI на 95% состоит из паскалятинки. Я такого г..на отродясь не видал.

              А о чем ты тогда можно говорить. Или ты изобрел новый способ кодить на на с++ - без использования win api?
              Ответить
              • > новый способ кодить на на с++ - без использования win api?
                Эм, Qt?
                Ответить
                • показать все, что скрыто>>Эм, Qt?

                  Отказаться от компилятора и вручную магнетизировать сектора жесткого диска.
                  Ответить
                • Qt не использует винапи?
                  Ответить
                  • Это абсолютно нереально. Апи-часть операционной системы.
                    Ответить
                    • Можно напрямую дергать sysenter или прерывание. Все будет работать, winapi не потребуется. Но это изврат.
                      Ответить
                  • Использует конечно. Но тут же всяко имелось в виду "не используя винапи в своем коде". Какая разница что-там оно использует под капотом, если мне с этим винапишным говном (или хлибовым говном под линухой) практически не придется контактировать?

                    В делфи же тоже кодят без использования winapi, пока не понадобится какое-то извращение, которого в библиотеке не реализовали, но его можно пильнуть через winapi.
                    Ответить
                    • А кому и что, вы, собственно говоря, доказываете?

                      Пусть жлоб набъет себе шишки.
                      Ответить
                      • > Пусть жлоб набъет себе шишки.
                        Каким образом?
                        Ответить
                        • С разбегу об стену.

                          Небо станет светлее.
                          Ответить
                    • Не писать без надобности платформозависимые программы? Что-то в этом есть.

                      С другой стороны, весь питон сделан для линупса.
                      Ответить
              • Зачем этот винапи нужен вообще?
                Ответить
                • Чтобы петушков потрошить.
                  Ответить
                  • >>Зачем этот винапи нужен вообще?

                    Переформулирую своей ответ:
                    Чтобы петушкам-быдлокодерам(типа короля и гостя) зубы дробить.
                    Ответить
                • Чтобы преподов в рашке на пенсию не отправлять.
                  Ответить
                  • Это где преподы рассказывают про винапи? :)
                    Ответить
                    • in your dreams
                      Ответить
                    • Это где преподы знают что это такое ? и почему в линуксе этого нет :)
                      ЗЫ прям реально слышал фразу "винапи линукса чего то там ....."
                      Ответить
                      • >>Это где преподы знают что это такое ? и почему в линуксе этого нет :)

                        Не в линуксе нет, а линукса нет )
                        Линукс - это эротический сон пингвинофила, не надо всем его пересказывать.
                        Ответить
                      • В линуксе есть консолечка, которая входит в срачло и выходит. Входит и выходит.
                        Ответить
                        • Входит и выходит, стимулирует предстательную железу программиста.
                          Ответить
                        • Главное вовремя кончить, пока никто не заметил. А то можно по уши в сперме обляпаться а она очень плохо отмывается с рук.
                          Ответить
                    • Попадаются изредка кадры, которым задали что-то на винапи свалять.
                      Ответить
                      • Сам то ты кто, кадр? Безработный системщик, программирующий под юбкой у папы?
                        Ответить
                        • пишу на ассемблере за пару гамбургеров и бутылочку пепси-колы
                          Ответить
              • Да - не юзать венду - удивись. Ну и как тебе ниже сказали - юзай на вантузе кути, хоть и говно - но получше питухапи в раз 100500.
                Ответить
                • >>Да - не юзать венду - удивись

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

          Ты еще на андроид спяздни, что он при попытке работы с сетью из главного потока эксепт бросает.
          Ответить
          • > Ты еще на андроид спяздни, что он при попытке работы с сетью из главного потока эксепт бросает.
            А это походу был ответ гугла на "андроид - тормозное говно, в котором половина прог не отвечает по 3-5 секунд" ;)
            Ответить
            • А по сути есть че сказать?
              Ответить
              • А что по сути? Блокирующим операциям в главном потоке не место. Так что ребята из гугла правильно поступили. Другое дело, что в андроиде есть довольно удобный AsyncTask. А в том же делфи аналогов нет (или я ошибаюсь)?
                Ответить
                • По сути - чем плоха потокобезопасность гуя (если я правильно понял http://www.govnokod.ru/13306#comment185818).
                  Ответить
                • В Delphi есть модуль WinSock, а в нём есть все нужные операции, а что?
                  Я даже не знаю, блокирующие они у меня, или нет, потому что я их применяю, только получив сигнал о новом сообщении.
                  Ответить
                • Кстати, кто первым придумал async? Дотнет?
                  Ответить
          • >>Пиздец, как так можно - запретить макакам, например, делать дисковые операции из гуй треда. Надо срочно разрешить!

            А как насчет такого:

            while c=true do
            label1.caption:=inttostr(x)
            )
            Ответить
        • > в VCL только главный поток имеет право доступатся к гуям
          Как-будто где-то еще не так. Тредсейф гуи библиотек раз два и обчелся. Большинство только в главном потоке (или дополнительном но один хрен одном, как swing) и работают.
          Ответить
          • "Как-будто где-то еще не так."

            WinAPI - тредсэйф. (Сюрпризом было что MFC не тредсэйф.)
            Какао частично тредсэйф.
            Ответить
            • Как обычно, через анус.
              Ответить
            • > WinAPI - тредсэйф.
              > Какао частично тредсэйф.
              Еще AWT, емнип, потокобезопасен.

              Итого насчитали 2.5 библиотеки. Собственно как я и писал выше: тредсейф гуи библиотек раз два и обчелся.
              Ответить
          • Главное - а зачем? Чем не устраивает взаимодейтсвие с гуем через потокобезопасную очередь? Меньше будет макак, хуячущих блокирующие операции в гуй. Мюторрент, например, этим страдает.
            Ответить
            • > Чем не устраивает взаимодейтсвие с гуем через потокобезопасную очередь?
              Меня - всем устраивает. Я просто рассказывал о факте. Переадресуйте вопрос оратору выше :)
              Ответить
            • P.S. Торопился с работы, сейчас распишу подробнее.

              Потокобезопасный гуй не нужен. Почему?

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

              Во-вторых, хоть сам гуй и будет потокобезопасным, но остальные то данные и функции - нет! В результате имеем более сложный код и бОльшую вероятность напороться на гейзенбаг, чем с однопоточным гуем.

              В-третьих, скольким задачам действительно необходимо много манипулировать гуишными элементами из воркеров? В большинстве случаев воркеру достаточно доложить о прогрессе/передать промежуточные результаты или перекинуть результат какого-то вычисления/загрузки в GUI поток.
              Ответить
              • >Во-первых, он будет медленнее однопоточного из-за того что почти в каждой гуишной операции будут стоять синхронизации или пробросы черед тредсейф очередь.
                Охуеть замедление. Есть пример, когда взаимодействие с гуем будет узким местом в программе?

                >Во-вторых, хоть сам гуй и будет потокобезопасным, но остальные то данные и функции - нет! В результате имеем более сложный код и бОльшую вероятность напороться на гейзенбаг, чем с однопоточным гуем.
                Ну это вообще пушка. Т.е. потокобезопасность гуй фреймверка не означает потобезопасность остального кода - и это плохо, лучше тогда и гуй сделать небезопасным? Я правильно понял?

                Проггеру дали безопасный по умолчанию инструмент без особых накладных расходов на безопасность, что в этом плогого?
                Ответить
                • > Есть пример, когда взаимодействие с гуем будет узким местом в программе?
                  Да, погорячился я тут. Буферизация рисования спасет от узкого места.

                  > что в этом плогого
                  Потокобезопасный гуй будет приветствовать работу с ним из нескольких потоков (иначе зачем его таким сделали?).

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

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

                  После внедрения - во всех gui'шных компонентах, и почти во всех классах, которые используются из гуя.

                  Люди стараются минимизировать взаимодействие между тредами, а вы своим многопоточным гуем повышаете его...

                  P.S. Вот еще статейка есть на данную тему, там другие доводы: https://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html
                  Ответить
                  • > https://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html
                    Чет дохуя букв на бусурманском.
                    Ответить
        • > обезянам дали гранату с уже вытянутой чекой.
          Так вот типичный нуб не запилит тред сам, по своей воле. Там же сабклассить и т.п. Поэтому поток один и проблем с многопоточностью никаких.

          А здесь ему показали как это сделать, поманили конфеткой. Но не пояснили зачем это все и че оно делает. Вот поэтому я и предложил четвертовать таких авторов.
          Ответить
          • Всех не перестреляешь.
            https://www.google.ru/#output=search&q=create+thread+tutorial
            Ответить
            • > Всех не перестреляешь.
              Достаточно одного публично повешать, выпотрошить и четвертовать, и остальные сами свои говнотуториалы по тредам уберут ;)
              Ответить
              • Пыхомакакам это обьясни, блядь, у них викиучебник лежит, который по сути мануал для идеально дырявой программы.
                Ответить
                • Можно ссылку?
                  Ответить
                  • wikibooks.org
                    Ответить
                  • http://ru.wikibooks.org/wiki/PHP

                    Полный набор: скули, XSS.
                    Ответить
                    • Про авторизацию там вообще какой-то треш угар и содомия...

                      А я думал, откуда пыхеры берут ебанутую идиома с чтением одной записи в цикле...
                      while($row_check_password = mysql_fetch_assoc($check_password)){  //Получение данных о пользователе
                       
                              $table['id'] = $row_check_password['id'];       // ID Пользователя
                              $table['login'] = $row_check_password['login'];    // Логин пользователя
                              $table['password'] = $row_check_password['password'];    //Пароль пользователя в зашифрованном виде
                              $table['blog_name'] = $row_check_password['blog_name'];       //Имя блога пользователя
                      }
                      А после
                      //Пользователь вошёл в систему
                      setcookie("user_enter", true);
                      я уже не смог вылезти из под стола.
                      Ответить
                • О, тут как на хабре рнр не любят, да еще и коменты лесенкой. Ну чем не хабр?
                  Ответить
                  • Не PHP а пыхомакак. Сам PHP - вполне терпимый язык. И среди пишущих на PHP если хорошие программисты... Но, к сожалению, из-за низкого порога вхождения, они теряются в море пыхомакак, типа тех, которые писали туториал по приведенной ссылке, даже не понимающих, что делает их код...

                    P.S. Ну или этот код там вброшен намеренно, со злым умыслом.
                    Ответить
                    • Да если честно, похоже на диверсию, практически 1 в 1 мануал по уязвимостям. Но! В любом другом языке эту хуйню бы в 2 момента вычистили и автора послали на работу, очко чистить. А тут висит и висит.
                      Ответить
                      • В педии в статье "параметризированный запрос" во всех языках висели параметризированые запросы, только в рнр - обычные, и никому в голову не пришло поменять.
                        Ответить
                      • > А тут висит и висит.
                        Те, кому нужно читать этот туториал еще не понимают, в чем там проблемы.

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

                        P.S. Вот что хочется сказать в пользу пыхи - несмотря на все недостатки языка и библиотеки, на php.net вполне годная документация, с примерами и указаниями на подводные камни, которой позавидуют очень многие другие языки\библиотеки.
                        Ответить
                    • Ну надо сказать, пхп и сам слегка ломаный. Переинициализация скрипта с 0 при каждом запросе, хуй найдешь фреймверк для параметризированых запросов, шаблонов.
                      Ответить
                      • > фреймверк для параметризированых запросов
                        Почему? Изкоробки есть PDO (если его не умудрились не поставить):
                        $db->prepare("select some from shit where user=? and bar=?");
                        $db->execute(array(100, 500));
                        Да и ORM'ы под пых есть.
                        Ответить
                        • >prepare
                          >execute
                          Вот я упорно не понимаю, почему не сделать как в питоне, с форматом printf, и передаем список или хеш-массив?
                          Ответить
                          • Zend_Db_Table_Abstract::getDefaultAdapter()->fetchAssoc(
                              'select some from shit where user=? and bar=?', 
                              array(100, 500)
                            );
                            Не пойдёт?
                            Ответить
                            • Уже ближе, но блядь
                              >Zend_Db_Table_Abstract::getDefaultAdapt er()->fetchAssoc

                              Зенд, кстати, разве не платный?
                              Ответить
                              • Студия и сервера платные, а фреймворк халявный:
                                http://framework.zend.com/
                                Ответить
                                • А оно на всех хостингах стоит?
                                  Ответить
                                  • Он на чистом PHP, поэтому можно самому поставить. Проблема в том, что архитектура ZF требует выносить папку с библиотекой за пределы htdocs, но можно и в htdocs поставить, если хостинг разрешает править .htaccess, чтобы закрыть доступ к библиотекам извне.
                                    Ответить
                                    • А тормозить будет, в пхп же компиляция и инициализация с 0 при каждом запросе?
                                      Ответить
                                      • Да, всё верно, поэтому использовать mysqli или pdo без фреймворка напрямую предпочтительнее.

                                        Однако, если на хостинге есть кэш опкодов типа APC или XCache, тормозить не будет, пока библиотека лежит в кэше.
                                        Ответить
                          • Всмысле чтобы было одной функцией?

                            А вот хуй бы их знал если честно. Я сам был в шоке, когда увидел, что PDO::exec и PDO::query не принимают тот самый массив параметров. Добавить к тем функциям дополнительный аргумент, по аналогии с PDOStatement::execute это явно не самая сложная задача.

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

                            P.S. Ну и всегда можно потратить 5 минут и написать себе хелпер, работающий так, как тебе удобно. Например такой:
                            // для простоты примера предполагается, что PDO
                            // работает в режиме выброса исключений
                            public function query($sql, $params) {
                                $st = $this->db->prepare($sql);
                                $st->execute($params);
                                return $st;
                            }
                            Ответить
                            • >P.S. Ну и всегда можно потратить 5 минут и написать себе хелпер, работающий так, как тебе удобно. Например такой:
                              Про TOOWTDI слышал, питушок? Или ты жаваеб?
                              Ответить
                              • > питушок
                                > Или ты жаваеб?
                                Я вас чем-то обидел? Откуда у вас столько ненависти к моей скромной персоне?

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

                                  >Только не говори мне, пожалуйста, что для каждой задачи существует ровно одна питонолиба, включенная в комплект поставки, и она идеальна для всех применений.
                                  Параметризированные запросы - это такая охуенно уникальная задача, что пиздец. Для нее есть все, что надо искаропки. Ты еще спроси может ли фитон json парсить. А жаба, кстати, может?
                                  Ответить
                                  • Как ты отлично переводишь стрелки с языка на язык. Только что говорили о PHP, и о том, что в нем нельзя одним вызовом запустить параметризованный запрос, как ты переезжаешь на яву...

                                    > У вас даже декодирования хекса нету.
                                    А это что? http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#valueOf%28java.lang.String,%20int%29

                                    > А жаба, кстати, может?
                                    Насколько знаю, из коробки не может. По жабе не ко мне вопросы, я вообще говоря крестовик ;)
                                    Ответить
                                    • Я просто начал подозревать, что ты жаваеб, но у сишкоблядей с этим, наверно, еще суровей, прибитые к полу игрушки, велосипеды сами делают, из конструкторов.

                                      >А это что?
                                      Не в инт, блядь, а в byte[]
                                      Ответить
                                    • Ну естественно, это же тролль) На диету бы его.
                                      Ответить
                                      • Stertor http://www.govnokod.ru/13306#comment186435 , кому это?

                                        >На диету бы его.
                                        Зачем? Чтобы он тоньше стал?
                                        Ответить
                                        • Вот лично тебе.
                                          Ответить
                                          • >>Зачем? Чтобы он тоньше стал?
                                            По крайней мере, не будет таким занудой, как сейчас.
                                            Ответить
                                          • Stertor, кому мне, блядь? Ссылку дай.
                                            Ответить
                                            • Тебя что, носом ткнуть?

                                              P.S. Я не блядь, я жду маршрутку.
                                              Ответить
                  • Как ты нас разгадал! Пойду напишу в свой блог.
                    Ответить
        • >>который жутко тормозит

          Значт, программа составлена неправильно. Тормозит не Synchronize, а метод, который им вызывается.
          Ответить
      • В этой статье я расскажу как сделать дополнительный поток в программе.
        Так как вам нафиг не здалось знать, что это - просто сделаем. Создадим для этого целый анальный класс и занаследуем от потока. Почему просто не использовать поток? Да иди ты в жопу, директор, вот почему.
        Ответить
    • Помню, когда я сам первый раз такое сделал, когда только-только изучал Делфи, прога вылетела с ошибкой "canvas not allowed to drawing". Я сразу бросил все и стал читать справку, а когда попадались трудные места, ходил по форумам и просил разъяснить... Но нынешних юнцов не переубедишь.
      Ответить


    • Canvas not allowed to drawing
      Ответить
    • работа с VCL из других потоков должна быть только через метод Synchronize.

      Important: Methods and properties of objects in visual components can only be
      used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

      and UpdateCaption could look like,

      procedure ttt.UpdateCaption;
      begin
      Form1.Caption := 'Updated in a thread';
      end;
      Ответить
      • Мы в курсе, кэп.
        Ответить
        • а вот автор походу нет:
          procedure TVANSThread.Execute;
          begin
          end;
          В неё вписываем следующий код:
          for i:=0 to 10000 do Form1.Memo1.Lines.Add(IntToStr(i))
          Ответить
          • автору это бесполезно доказывать. Он даже слушать не станет.ь См., что он у себя пишет на сайте.
            Ответить
    • Участник, прошу тебя: не поленись, пройди по анкетам и поставь всем минусы.
      Минуисуя участников, ты помогаешш обществу снижать ЧСВ.
      Ответить
      • Как в анкетах можно минусить, чудило?
        Ответить
        • >> помогаешш
          Оригинально. Пароль все таки придется поменять.
          Ответить
          • Автор обоссался и поспешно удалил эту страничку)))
            Ответить

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