1. C# / Говнокод #1565

    +107.5

    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
    /// <summary>
            /// Check if this char is digit
            /// </summary>
            /// <param name="symbol">Some char</param>
            /// <returns>True if is digit</returns>
            private static bool IsDigit(char symbol)
            {
                List<char> digits = new List<char>();
                digits.Add('0');
                digits.Add('1');
                digits.Add('2');
                digits.Add('3');
                digits.Add('4');
                digits.Add('5');
                digits.Add('6');
                digits.Add('7');
                digits.Add('8');
                digits.Add('9');
                return digits.Contains(symbol);
            }

    так сказать код от велосипедиста, сделал свой IsDigit() хотя уже есть char.IsDigit()

    Запостил: sv219, 13 Августа 2009

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

    • IMHO, то, что человек повторил то, что уже написано - не так страшно. Страшнее то КАК он это повторил :)...

      А прежде чем читать далее, поймите, я человек очень замороченный на оптимизаци, поэтому C# я изначально ненавижу и решение с "#define" хоть и противоречит идеологии C#, но тем ни менее является самым, ИМХО, оптимальным, т.ч. на это решение прошу не ругаться. Тем кому не нравится, пусть читают "Ну или в худшем случае, ..."

      В очень многих программах основной нагрузкой является текстообработка, либо сортировка, поэтому такие функции как isDigit() очень важно писать крайне оптимально. А наиболее быстрой реализацией является, ИМХО, определить один раз массив размером в 256 элементов в котором расставлены единицы там не где цифра и нули там где цифра, и всю функцию, говоря Сишным языком, заменить на "#define isDigit(sym) УПОМЯНУТЫЙ_МАССИВ[(unsigned char)sym]". Это делается за 1-2 инструкции и без вызова функции. Ну или в худшем случае, кто хочет именно делать каждый раз вызов функции (push, call, pop и бла-бла-бла), сделать таки функцию с "return УПОМЯНУТЫЙ_МАССИВ[(unsigned char)sym]".
      Ответить
      • Кстати, извиняюсь за ламерский вопрос, в C# сам потом подчистит за вот этой строчкой, чтоли?:
        List<char> digits = new List<char>();
        Ответить
        • Да сборщик мусора сам уничтожит список
          Ту страшнее то что при каждом вызове он заново его инициализирует список.
          Ответить
          • Да, реализация просто ужасная.

            А C# я теперь не люблю ещё больше после такой информации :)
            Ответить
            • Написано же выше, в C# есть встроенная функция char.IsDigit()
              в нормальные люди и проверяют. Ну и естественно, если идет строка, то можно превратить в массив символов и проверить, сделать быстрый regexp
              Ответить
      • Нормальный код. дешего просто и сердито!
        если это не используется в циклах с мульоном итераций оптимизация нах не нужна.
        единственно лист надо статиком прописать.
        Ответить
        • В твоём "нормальном коде" более 1000 процессорных инструкций... В моём одна (1)... Даже если оно и не используется в критически важном месте (хотя в первом комментарии я пояснил что всё-таки такие функции очень важно оптимизировать), то всё-равно стоит задуматься.
          Ответить
          • Это был мой комментарии (про кол-во инструкции), забыл залогиниться.
            Ответить
          • Да мне похуй сколько там инструкций. Я еще из ума не выжил чтоб считать сколько там инструкций 1 или блять 1001
            код выполняется редко и есть хуева туча мест в проге где можно оптимизировать.
            А этот код нормальный читаемый и под профилером наврядли вообще будет заметен.
            Я встречал долбоебов которые боялись код выносить в отдельный метод обьясняя это тем что вызов метода жрет ресурс.
            Ответить
            • >Я встречал долбоебов которые боялись код выносить в отдельный метод обьясняя это тем что вызов метода жрет ресурс.


              Наиболее горячие методы будут, вероятно, заинлайнены JITом.
              Ответить
      • Решение с #define не только противоречит, но вообще отсутствует в C#
        И массив прийдётся делать на 65536 элементов т. к. в C# используется Unicode
        Ответить
        • "#define" отсутствует в C#? И никакого эквивалента нет?.. Сочувствую программистам сего языка.

          А если с массивом такая проблема, есть общеизвестный способ двойного сравнения (sym>='0' && sym<='9')
          Ответить
          • Опять пытаются паровозы на марс отправить. Зачем там #define ? Константы забивать? Так есть const. define там не нужен потому что есть другие инструменты.
            Ответить
          • #define" присутствует, но он не нужен. Даже в си плюс плюс лучше использовать const. Компилятор его встроит и без вашей помощи.
            Ответить
        • Стой! "char" - это переменная с плавающей длинной?! (unicode)
          Ответить
      • Ты говоришь "Я не знаю c#, поэтому его не люблю." Это смешно, если не сказать - глупо. За c#, а, точнее, технологией .NET будущее. Ты ошибаешься, если считаешь, что программы на шарпе сильно медленне программ на С++. В ряде случаев они будут наоборот быстрее, так как программа компилируется на компьютере пользователя, учитывая особенности его железа, а на С++ пишется универсальный код, который должен работать везде.

        К вопросу о твоём решении проблемы методами С++. Кэш не резиновый. Ты предлагаешь тратить кучу памяти на массив, который придётся периодически подгружать в кеш, если программа целиком в нём не умещается. А это здорово замедлит её исполнение. Работу с кешем ты не в силах оптимизировать.
        Ответить
        • 1.) Я не говорил что не знаю c# и _поэтому_ его не люблю;
          2.) Ты ошибаешься, думая что я пишу на C++;
          3.) Ты ошибаешься, что С# быстрее Си, ибо Си намного более приближен к машинному языку, а значит в нём меньше лишних затрат (т.е. почти все затраты связаны с неграмотностью программиста, а не с тяжестью функционала языка);
          4.) Ты ошибаешься что С++ даёт универсальный код (не зря придумали "#ifdef __amd64__" и т.п.;)
          5.) Ты _очень крупно_ ошибаешься, что Си не использует возможности железа (man gcc);
          6.) 256байт ОЗУ - не такая и куча памяти, хотя да - для кеша не так и мало. В любом случае MOV из ОЗУ на Athlon занимает 4 такта (а не из ОЗУ - 1 такт), а двойное сравнение - 3 такта (два сравнения + AND).
          Ответить
          • Говоря про двоёное сравнения, я говорю про альтернативный вариант, кпомянутый мной чуть выше: (sym>='0' && sym<='9')
            Ответить
          • вот пиздец моск совсем отсутствует
            Говорят блять что сейчас главное скорость разработки и работоспособность приложения а скока памяти оно жрет не так важно 100МБ или 200MБ на это заказчикам покласть.
            А Задротные неудачники вечно пиздят а на с++ на 0.01мс быстрее а на АСМ еще на 0.01 мс быстрее.
            Тут блять мы не програмирование реалтайм систем драйверов и прочего говна обсуждаем и примеры говнокода не из них приведены.
            неужели это так сложно понять??? я просто охуеваю скока же задротов....
            Ответить
            • Всё наоборот, это вы ради лишних 10%-20% в скорости разработки делаете код подобный указанному выше, который работает в сотни раз медленнее и жрёт ОЗУ в несколько раз больше.

              Скажу по секрету, более 95% ПО, которое я использую, писано на Pure C, просто из-за его качества... Мне приятно работать с таким ПО :)
              Ответить
              • в интернет на заходите больше тут все на пхп явах и с# а вы их так не любите
                Ответить
                • Что есть "Интернет" в Вашем понимании? Весь smtp,pop,imap (даже у мелкомягких), HTTP, IRC, ssh, telnet, ftp, большенство dc-хабов, и вообще почти все остальные протоколы держатся на ПО, писанном на Pure C.
                  Ответить
                  • вот пиздец блять человек.... все держится на блять мдп-транзисторах.... давайте будем аппаратные решения двигать нахуй медленные програмы на сяких тупых языках писать??? взял схемку набросал тех процесс придумал и супер решение аппаратный движок форума заебись скорость будет.
                    Ответить
                    • Если так хотите - вперёд. Я говорю о реальных вещах, в отличие от Вас. Если Ваш мозг не может позволить писать на Си, то это не повод обзывать других. Прошу заметить, я долго терпел оскарбления, прежде чем заговорил о мозгах других.
                      Ответить
                      • Мой моск может писать на чем угодно и если мой моск чувствует что необходимо аппаратное решение оно и будет реализовано, а ваш моск видимо кроме пуре с ничего больше не знает и все остальных считает за идиотов.
                        Ответить
                • А даже если под "Интернет" сам IP ("Internet Protocol"), что по-моему непривычное понимание, то почти вся маршрутизация на критических узлах идёт через ПО написанном на Pure C.
                  Ответить
                  • на сайты не заходите
                    протоколы я разрешаю использовать :)!!
                    Ответить
                    • Прошу заметить что интерпретатор PHP и сам Apache/nginx/0W-httpd/MySQL писаны именно на Си, т.е. более 95% кода отвечающего за работу сайта писано на Си, а на php делается лишь "последняя миля".

                      И, "слава Богу", этот php код выполняется не на моих компьютерах :). Я ведь "лазая по сайтам" получаю не php-код, а результат его работы, и он (результат) меня так не пугает)
                      Ответить
                      • Ха ха ха мдп-транзисторы все остальное -- последняя миля класс

                        и не пофиг где код выполняется у вас или на сервере или еще где??? мне например покласть главное что когда я вписываю в строку адрес у меня появляется сайт а уж как оно там все сделано меня не особо ебет какие там процессоры какие операционки и тд.
                        Ответить
                        • Да, конечному пользователю сайта - абсолютно пофиг. не пофиг тому, кто отвечает за достаточно железа, на котором крутится этот сайт.
                          Ответить
                          • железо вас как разработчика ебет только тогда когда его не хватает для выполнения ваших разработок
                            Ответить
                            • Не знаю как у Вас, но где бы я небыл, везде все эти сервера под миллион рублей почему-то еле-еле справляются, и то после долгого "тюннинга". То там ASE с несколько-сот гиговыми базами тормозит не-подетски, то там почтовый сервер от получаемого кол-ва спама просто фигеет, то ещё где mysql проседает из-за тонны запросов в секунду, то ещё где машина не успевает собирать и обрабатывать данные по трафику, то ещё где PPTP-канал проседал из-за того что у PPTP-шлюза не справлялся CPU и т.д. т.п..

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

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

                                  Вопрос на засыпку почему мелкомягкие со всеми своими "супер-технологиями", мелкомягких ексченджем прочими вещами, которые вы так защищаете используют postfix (который в отличие от мелгомягких решений писан на Pure C)?
                                  Ответить
                              • я смотрю вы прям на все руки мастер беретесь за все прямо страшно подумать какой вы крутой программер.
                                Предлагаю вам начать писать свою супер оптимизированную жава машину например. выложить все на sourceforge и уже мы посмотрим тогда и поверим в вашу крутость...
                                Ответить
                                • Ну я не на все руки - мастер, я занимаюсь строго сетевыми задачами :), но правда приходиться заниматься прямо с 1-го по 7-ой уровень модели OSI(
                                  Ответить
                                  • ну так и при чем тут с#????
                                    Ответить
                                  • >но правда приходиться заниматься прямо с 1-го по 7-ой уровень модели OSI(

                                    "с 1-го" это всмысле вы витую пару обжимаете?
                                    Ответить
              • Бесполезный холивар. Минусанул.
                Речь о кривой реализации вышеуказанного кода на C#, а не о самой платформе. И на Си можно неслабо наговнокодить. Для разных задач разноуровневые решения.
                Ответить
              • Да, и поддерживают гонку вооружений мощности компьютеров.
                Ответить
          • 1) Такой вывод следует из твоих слов.
            3) От того, что Си более низкоуровневый, не значит, что программы на нём сразу станут быстрее. Скорость работы большинства программ ограничено скоростью операций ввода-вывода. И такты выполнения арифметики не решают.
            P. S. Я пишу серьёзное ПО и на С++ и c#. И я предпочитаю c#, поскольку, как тут уже многократно сказано, на нём скорость разработки ПО выше, а это вытекает в зарплату. Я пишу на С++ только критические к скорости выполнения арифметики программы.
            Ответить
            • 1.) Не следует.
              3.) Скорость большенства программ зависит от того, насколько разумно они написаны, и чаще всего лично на моём Celeron 900MHz упор идёт совсем не в ввод-вывод. А на моём втором компьютере с 256МБайтами ОЗУ тоже вовсе не ввод-вывод.... увы..
              Ответить
              • Сочувствую. Если бы ты писал на c#, ты бы давно заработал на более мощный компьютер.
                Ответить
                • Я вообще не программист :).. Я студент-физик на втором курсе.
                  Ответить
                  • Мда, нашёлся тут эксперт...
                    Ответить
                    • 1.) Я не говорил что я эксперт;
                      2.) Не смотря на это, опыт программирования у меня есть, у меня есть собственные проекты, которые я пытаюсь поддерживать, а так же и на официальных подработках приходится программировать.

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

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

                      Опять же повторюсь, я не считаю себя экспертом и прошу без перехода на личности
                      Ответить
                      • Ой товарищ мой вам совет забить нахуй на с и идти изучать современные языки и подходы, и выкинуть в пизду все эти оптимизаторские мысли и начать думать не над битами и тактами а над архитектурами и подходами. А то через 3 с половиной года выясниться что придется вам хуячить на яве к базе через хибернейт лезть и за трату времени на оптимизацию там где все работает получать пиздюлей от босов
                        Ответить
                        • Какие паттерны, какая архитектура?! главное что бы ф-ция IsDigit использовала меньше инструкций! вот в чем секрет успеха!
                          Ответить
                          • Секрет успеха в том, чтобы на автомате писать нормальный код, а не быдлокод. Хоть и на последний всем от начальников до клиентов было накласть, мощности-то хватит, епта!
                            А если смотреть шире, то во все века во всех производственных процессах были мастера и ремесленники. У последних поделки были кривенькие, косенькие, но ведь работают!
                            Но потомки помнят все-таки мастеров...
                            Ответить
                        • Хватит оскарблений то... Что Вы как быдло то?

                          Я предлагаю не сидеть и оптимизировать круглые сутки, а _изначально_ писать нормально, притом более быстро (само написание кода), чем вышеуказанный кусок кода.
                          Ответить
                          • ха ха ха какие оскарбления нахуй мы на говнокоде а не в нормальном месте :)
                            если вы не можете пережить наездов на ваши религиозные предрассудки в плане программирования то вам будет еще сложнее бабосики зарабатывать. тк поверьте сразу босом вы врядле станите и предется вам хуячить на том что начальство прикажет установить ту операционную систему и тулзу для ваяния кода кот вам купят ну и т.д.
                            так что не советую вам злоупотреблять выражениями типа я это не буду юзать т.к. она на с шарпе написано или от MS вы сразу будете посланы на хуй еще на собеседовании :)
                            Ответить
                            • Я никогда небыл против хорошего ПО. Просто никогда с таким не сталкивался, чтобы тот был написан на C#
                              Ответить
                              • о мульоне сайтов написаных на явах точканетах вы не знаете?
                                Ответить
                          • Так тут народ и обсуждает, как быстрее. Задайте вопрос и вам ответят.
                            В конце-концов ресурс познавательный.
                            И я не понимаю, почему студент-физик отказывается от реальной пользы, которую несет C# для вашего брата. Судите сами, процесс разработки убыстряется, соответственно ваша задача решается намного быстрее. PROFIT!
                            Ответить
                    • Я имел в виду, что я не богат из-за того, что не хочу увлекаться работой и вылетать из МИФИ, а не потому что я не умею зарабатывать на программировании.
                      Ответить
                      • Вернее, мне даже нравится учиться в своём ирнституте, и я хочу сначала отучиться, а только _потом_ зарабатывать деньги.
                        Ответить
                        • Ничто не мешает совмещать... кроме вашего мировозрение на счет программирования
                          Ответить
                          • Мешает, я уже однажды чуть не вылетел, пытаясь совмещать, пришлось в академ уходить (что тоже не так-то просто)
                            Ответить
                      • тока неудачники говорят что не хотят денег
                        Ответить
                        • Я хочу хорошо доучиться. Может это и мысль неудачника, но я ещё считаю вполне здравой.

                          И хватит оскарблять уже. Если не можете по-другому что-либо доказывать, то это очень плохой признак.
                          Ответить
                          • Аксиомы не доказывают
                            Ответить
                            • Аксиомы даны только в математических аппаратах, а в реальном мире есть только гипотизы.
                              Ответить
                              • мдааа тяжелый случай идем читаем 100 раз что такое аксиомы и кем они "даны" а то блять придется второй академ брать нахуй
                                Ответить
                                • Я то как раз прекрасно знаю что есть "аксиома", а вот вы походу не знакомы с клссической немецкой философией, например Канта, иначе знали бы что в реальном мире ничего постулировать нельзя.
                                  Ответить
                                • Ты хуй
                                  Ответить
                                • Идем читаем РАУ?
                                  Ответить
                                  • Что такое РАУ?
                                    РОССИЙСКО-АРМЯНСКИЙ УНИВЕРСИТЕТ?
                                    «РАУ Айти» — Автоматизация учёта и бизнес-процессов?
                                    Ответить
                • ХА ХА ХА пять балоф зачет ++++ супер
                  ваш моск читает мои мысли
                  Ответить
                • Пришлось даже аккаунт зарегить чтоб плюсануть
                  Ответить
                • Чисто на последок. Это, наверное, мой последний пост в этой теме.

                  Ваш подход мне очень напоминает:
                  1.) подход попсы в музыке;
                  2.) подход microsoft, в момент, когда гигантами были всякие apple, ibm и прочие дяди.

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

                  Да, в том и другом есть смысл, но это подход не для программиста, а для бизнесмена. Есть ведь толпа всяких людей, наподобие Тимо Сирайнен, которые пишут действительно хороший софт, и при этом материально живут очень даже не плохо. Вот этот человек - true программист. :)... А вы все тут опять же предлагаете быть как Microsoft.

                  Если кто-то, конечно, бездарен, и не способен писать как те люди, что написали всё то на чём держится почти любой сервис (как я уже говорил, даже для выдачи сайтов 95% кода работающего для этого - Pure C, а остальные сервисы не содержат и оставшихся 5%), что он пользуетесь, то конечно ему дорога "рисовать кнопочки и писать в них код подобный <Говнокод #1565> и не важно на каком языке, важно что за код будет с вашим подходом". Я не говорю, что кто-то тут бездарен, мне просто кажется, что Вам лень пытаться делать по-другому... Ну дело Ваше, это Ваше право, если Вам это помогает проще жить - пожалуйста. Просто по мне это далеко от искусства программирования, извиняюсь, за своё скромное мнение.
                  Ответить
                  • да да именно лень думать сколько тактов сколько бит памяти и тп будет юзать код который выполняется один раз в час мне лень думать вы правы
                    при написании такого кода моя задача затратить как можно меньше времени и написать код как можно понятнее

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

                    да и я хочу чтобы микрософт пошел нахуй а я занял его место. И мне покласть на то какого качества будет мой код если он позволит эту цель реализавать!!!
                    Ответить
              • > на моём Celeron 900MHz упор идёт совсем не в ввод-вывод. А на моём втором компьютере с 256МБайтами ОЗУ тоже вовсе не ввод-вывод..

                Слушайте, ну пора уже сделать апгрейд
                Ответить
                • Для 2009-го это было нормой.
                  Ответить
                  • В 2009-м уже были на Socket 775 Core 2 Duo и DDR3 (их явно было не 256 метров), просто тогда (как и сейчас) были люди, которые по 11 лет не обновляли комптютер
                    Ответить
                    • Мало ли, что было.

                      Я понимаю, что 256 метров даже для 2005-го было мало, но в 2009-м продавались компы (новые, не с помойки) с DDR2 объёмом менее гигабайта (да, с Socket 775) с предустановленной Вистой, так что современный на тот момент веб-браузер или MS Office хрустели свопом.
                      Ответить
                      • да, я помню пердящие ноуты, семь минут грузящиеся.

                        Замена висты на семерку, а HDD на SSD в режиме ахцы, приводила к нереальному совершенно бусту, просто небо и землябля
                        Ответить
                        • В первую очередь надо было добавить оперативки хотя бы до двух гигов.
                          Ответить
            • Я почему-то думал что пацаны пишущие серьезное ПО гавнокодам не шарятся.
              Ответить
              • Да тут половина примеров нормальные просто говнокодеры фишку не рубят и считают все говнокодом

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


                Вы ошибаетесь. Именно на Говнокоде обычно и сидят наиболее квалифицированные инженеры
                Ответить
                • Приведите реальные примеры.
                  Ответить
                  • А где бы еще я познакомился с ISO, email protected, или Бормандом, например?
                    Ответить
                • Вы ошибаетесь. Именно на Говнокоде обычно сижу я
                  Ответить
          • 1) Вы сказали что не знаете C# спросив примитивный вопрос в посте 5016. т.е. вы спорите против того, чего не знаете.
            3) то что он быстрее в разработке на порядке не станете спорить, но вопрос о производительности ниже:
            4) пока в коде вы ставити свои директивы #ifdef __amd64__, JiT-ер компилирует под любую архитектуру максимально использовав её преимущества (SSE1-4.2 и т.п) и разработчику не секунды не надо об этом заботится.
            6) ваши подсчеты тактов и одновременно спор против высокоуровнего языка - нелепы
            Ответить
            • 1.) Я спорю против конкретных тезисов, которые понимаю.. и меня бесит не сам C# а идеология людей свазанных с ним, а о ней я более ли менее вкурсе;
              3.) Ну, если "туда плюнуть, туда плюнуть и бац! программа которая что-то делает" - это и есть "разработка", то да, спорить не буду;
              4.) К сожелению, компиляторы не оборудованны интеллектом, и по-этому знают как оптимизировать с учётом архитектуры только некоторые вещи. Увы... компилятор не может знать, где позволяется что-то сделать, а где нет... Да и более того, на Си код можно писать и без всякого "#ifdef __amd64__" (это вообще крайне редко делают), а компилятор всё-равно будет использовать возможности SSE и т.п. :)
              6.) Очень даже не нелепы. И я спорю не против самого языка, а против людей, что считают, что то, что написано выше - "нормально заисключением того, что digits надо определить статически"... Это НЕ нормально, это труд человека, который вообще не думает о том, что делает компьютер с его кодом, и никакой Ваш "JiT-ер" этого никак не исправит.
              Ответить
              • пиздец задроты атакуют опять
                АХТУНГ АХТУНГ
                надо просто запрещать думать на том уровне на каком вы предлагаете думать тем кто на с# програмит чтоб предотвратить появление говнокода в зародыше
                Ответить
              • Поясню.
                1. Идеология людей, связанных с c# ... Интересно. Все люди ложатся под одну гребёнку? Соглашусь, что это попсовый язык, и народ переходит на него с делфи, джавы или бейсика, но это не означает, что там нет грамотных людей, высококлассных профессионалов. Можно поподробнее про идеологию? Есть ссылка, где можно об этом почитать?
                4. Ты говоришь о потенциальной возможности человека превзойти компилятор в оптимизации, но над оптимизатором работают профессионалы, которые учитывают большинство встречающихся ситуаций. А программист станет ли писать лучше? .NET фреймворк написан на низкоуровневых языках, а большинство (моего) кода на c# - это обращение к библиотечным классам и методам. Большинство всех тормозов в программе связано с не правильными архитектурными решениями и алгоритмами, и лишь отдальные проценты - с конкретными методами, которые отлавливаются профайлерами и оптимизируются.
                6. Данный код действительно ужасен, в нём много проблем, но это не проблемы языка. То же самое пишут и на си.
                Здесь же отвечу на вопрос про GC. Действительно, из-за сборщика мусора в памяти может находиться немного лишних данных. Но это единственный его недостаток. Среди достоинств:
                1) Отсутствие утечек памяти
                2) Выделение памяти под новые объекты происходит мгновенно без обращений к ядру ОС.
                3) Освобождение памяти происходит в моменты более низкой загрузки ЦП.
                Таким образом, некоторый кусок кода на си, выделяющий много мелких кусоков памяти под временные объекты и освобождающий её, будет работать намного медленнее такого же куска кода на c#, где память соберётся вся сразу и чуть попозже.
                P. S. Я пишу серверное ПО для Центра Управления Полётами на c#. Нет там проблем с производительностью.
                Предлагаю игру. Походите по сайтам крупных российских и зарубежных компаний и посмотрите, на чём они написаны. Там очень часто встречается ASP.NET, JSP, Flex.
                Ответить
                • ...ПО для Центра Управления Полётами на c#....
                  студент должен пойти и убица ап стену
                  Ответить
                  • Я пытаюсь быть корректным, но уже не выдерживаю. Вы - убожество.
                    Ответить
                    • Вы - это именно только Вы, пъянь, а не все, кто тут сидит.
                      Ответить
                • Написал длинный пост, только-только нажал отправить, и ноут выключелся из-за севшего аккумулятора, поэтому в этот раз более в кратце :)

                  1.) Я извиняюсь за стереотип, это изначально некорректно с моей стороны. Проблема в том, что я привык видеть, что у людей пишуших на C#, код указ
                  анный выше является нормальным, и многие так до сих пор и считают, просто из-за своей безграмотности. Я думаю моя позицая давно ясна и не требует
                  дополнительных комментариев. Ещё раз извиняюсь за стереотип.
                  4.) Приведу простой пример. У меня была надобность реализовать крайне шустро работающую сетевую утилиту, основной нагрузкой которой являлась обра
                  ботка длинных строк. Дак вот я написал на asm клоны многих libc-шных функций. Суть в том, что в стандартном freebsd-шном libc та же функция bcmp(
                  ) сравнивает строки по-байтно, когда на 32-битном процессоре это можно делать сразу по 4 байта, после чего можно по-байтно проверить "хвосты". Вы
                  тоге, некоторые операции в утилите стали выполнятся раза в 2 быстрее и никакой компилятор не может догадаться, где так можно делать, а где не сто
                  ит... увы.. для этого надо обладать интеллектом. И большенство именно сильных оптимизаций (которые ускоряют на значительные проценты), требуют ин
                  теллекта.
                  6.) Я более чем согласен, что на Си тоже бывает полно говнокода. Например тот же (i/2 == i - i/2), ведь каждая операция деления занимает нескольк
                  о десятков тактов на современных CPU, когда "&1" занимает всего один такт. Т.е. (i/2 == i - i/2) работает раз в 50 медленнее. Хотя это, конечно,
                  не важно, если этот код используется редко, но мне всё-равно было бы за такое стыдно :). Т.е. я более чем согласен, что главное - руки, а только
                  потом инструмент. Более того, Си в руках плохого программиста, ИХМО, порядком ужаснее, чем язык более высокого уровня (хотя с другой стороны хорошо, хоть учится начиная снизу).

                  А утечки памяти обычно элементарно решаются valgrind.
                  Ответить
                  • Извиняюсь за переходы строк. Издержки copy-paste из less)
                    Ответить
                  • ну товарищ ну в стопицоттысячный раз вам обьясняют что оптимизация нужна там где нужна :) И барану понятно что если данный метод критичное место его надо оптимизировать. То что этот метод написан так неоптимизировано означает лишь то что это не критическое место и что тратить время на оптимизацию конкретно этого места просто глупо === лишать себя времени и $$$.

                    с точки зрения говнокода метод не отличается сильной говнистостью т.к.
                    1. Понятный
                    2. Короткий
                    3. Закоментирован
                    и даже с точки зрения ресурсов я бы не сказал что метод уж очень ужасный
                    Ответить
                    • так ведь проверка sumbol >= '0' && sumbol <= '9' намного быстрее пишется, отлаживается и быстрее работает (хоть вам и всеравно)...
                      если человек не смог нормально написать этот метод, то я представляю что он напишет в более сложных задачах, и инструмент тут не причем, все дело в квалификации тех кто пишет и тех кто проверяет... ну и еще факто, что разработчик набрал в 11 раз больше строк, чем должен был, то есть работодатель потратил в 11 раз больше средств и в 11 раз больше времени... вот вам и все преимущества С#...
                      Ответить
                      • ПИЗДЕЦ товарищ!
                        вы не допускаете что логика могла быть более сложная в том методе???

                        есть уже char.IsDigit()
                        нахуй он ваще писал этот метод по вашей логике он сыкономил в 11/0 больше времени и теперь должен работать за еду пожизнено...
                        Ответить
                        • потому что он тупой, как и его проверяющий, как и те кто за него заступается... даже если метод готовился к расширению можно было просто добавить условий, строка осталась бы одна просто стала бы длиннее... и тупой их начальник, потому что за этот код им платит деньги, причем такие чтоб им хватало на жизнь... я надеюсь что после следующего кризиса такие точно вымрут...
                          Ответить
                          • они может и вымрот но вы не доживете
                            так и будете вечно оптимизировать и задрачивать свой калькулятор и показывать всем свой мега крутой код когда менее задротистые товарищи будут бобы лопатой грести не смотря на то что их код не идеален.
                            Ответить
                            • тут дело не в задротистости, а в том какой код человек может написать с первой попытки... не важно на каком языке...
                              те кто напишет с первой попытки код приведенный в первом посте должны быть сосланы на рудники, в не зависимости от опыта, зарплаты и страны проживания...
                              Ответить
                              • этот код плохой я не спорю
                                но тут видно стремление к лучшему...

                                так можно всех сослать на рудник... Останетесь в одиночестве только код не показывайте свой никому а то вас тоже отпраят на рудник.
                                Ответить
                • P.S.: Ниже по данной странце с комментариями появился некий guest, который красиво всё расписал)
                  Ответить
        • >В ряде случаев они будут наоборот быстрее, так как программа компилируется на компьютере пользователя, учитывая особенности его железа, а на С++ пишется универсальный код, который должен работать везде.

          А дотнет стало быть тоже на компе пользователя компилиться?

          >За c#, а, точнее, технологией .NET будущее.
          не верю

          <offtop>
          Вообще я не понимают смысл JIT компилятора - дотнет все равно ничего кроме винды не поддерживает. Очевидно, что
          это всего лишь тупой клон джавы
          </offtop>

          >Ты предлагаешь тратить кучу памяти на массив
          А сколько еще места тратиться под всякий хлам, ожидая GC?
          Ответить
          • ладно а за какой технологие будущее
            по вашему? На чем вы собираетесь кодить после института?
            Ответить
            • Это был не я, если вы подумали иначе. :)
              Ответить
            • Qt
              Ответить
              • Сомнительно :)
                Ответить
                • Ну почему же?
                  Что смущает?
                  Ответить
                  • да както я не вижу особых преимуществ перед .net
                    Ответить
                    • Мульплатформенность.
                      А для дотнета эта возможность как бы закрыта(есть вроде какая-то глючная опенсорсная поделка под названием mono).
                      Ещё сигнал/слот. В дотнете есть что-то подобное?
                      Ответить
                      • Кривая эта QT, вместе с сигналами/слотами... Они пытаются библиотекой, макросами и прекомпиляцией изменить язык, наделить его свойствами, которыми он не обладает, типа сборщика мусора.
                        В .NET это всё изначально красиво и органично. Я предпочитаю если и писать на С++, то на чистом.
                        Ответить
                      • ну мульплатворменость это громко сказано если нужна перекомпиляция это реально только для опенсурс когда доступен исходник.
                        Вообще я как то с трудом представляю как оно там компилируется для какогонить ебанутого железа.
                        Ответить
                        • Насчет мультиплатформенности, меня очень порадовало что один и тот же проект в лёт компилился (и даже работал)) под виндой и маком в ихней же кроссплатформенной IDE QtCreator. А про инструмент QtConcurrent для распараллеливания процессов на заранее неизвестное число ядер процессора что скажете?
                          Ответить
                          • ну я думаю что распараллеливание это довольно неоднозначный процесс. Возможно использование разных инструментов и поможет но скорее нужно архитектуру приложения продумывать так что бы его можно было распаралелить. т.е. простое приложение типа вебсервера где каждый запрос от других слабо зависит оно замечательно распаралелит а вот более сложное уже фиг :)
                            Ответить
                      • > Мульплатформенность.
                        А для дотнета эта возможность как бы закрыта

                        – тем временем...
                        Ответить
                        • С ума сойти, да.

                          Imagine, рассказать людям из последних лет XX века, что в топ десять контрибьютеров ядра Linux войдет MS, а десктопные приложения будут писать на JavaScript
                          Ответить
                      • > Ещё сигнал/слот. В дотнете есть что-то подобное?

                        Да, разумеется. Почитайте про Attached Properties
                        Ответить
          • > Вообще я не понимают смысл JIT компилятора - дотнет все равно ничего кроме винды не поддерживает.

            Вы ошибаетесь
            Ответить
        • >Ты ошибаешься, если считаешь, что программы на шарпе сильно медленне программ на С++.
          Это довольно общие слова. В среднем конечно плюсы позволяют писать более производительный код, но какой ценой?

          > ряде случаев они будут наоборот быстрее, так как программа компилируется на компьютере пользователя, учитывая особенности его железа
          Вы про JIT?
          Обычно это решается отдельной сборкой нативного приложения под современные процессоры.
          Ответить
          • Кроме JIT есть ещё AOT: программа конь-пилируется ещё до первого запуска, и нативный образ кладётся в папку assembly или gac (не помню точные пути).

            Это делает программа ngen или одноимённая служба. Служба в Винде работает отвратительно: если при компиляции возникла ошибка, она будет делать повторные попытки, засирая процессорное время бесполезной работой. Поэтому я её обычно отключаю и зову ngen вручную.

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

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

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

        Тогда вы понимаете вероятно, что даже такой глупый код нужно делать не через посредство контейнера в куче, а через const массив хотя-бы.
        Ответить
    • Зато как читабельно, и безглючно! Зачет! Автору кода творческих успехов!
      Ответить
    • достали быдлокодеры уже, только и умеете что мощь проца перегонять в скорость написания программ, а на скорость программ вам плевать.

      Вот попробуйте на своём C# кодек написать, чтоб h264 720p без дропа кадров и с полным деблокингом смотреть на asus eeepc.
      Ответить
      • Да мы нормальные кодеры тут собрались, просто прикалываемся. Насчет правильных кодеков то и вправду диву даешься когда смотришь hdtv на eeepc или на старых ноутах без задержек и дропа кадров. Мелкософтовским кодерам, породившим С# технологии у которых акцент идет на то что все за тебя сделает компилятор проц и за память можно вообще не беспокоиться, такие скорости и не снились.
        Ответить
        • Бля ребята вы меня заебали крытые блять кодеры
          берите блять ЕС1840 и вперед на бейсике ебашите кодеки лет через 10 ченить получиться тока нах никому не нужно уже.
          Ответить
          • Вообще-то на Си люди очень даже успешно пишут кодеки, которые, кстати используются по всему миру... В отличие от кодеков на C#.
            Ответить
            • оо какие дауны пишут на пур с надо аппаратные кодеки юзать они быстрее и меньше електричества жрут и быстрее работают.....
              Ответить
            • безусловно, .net придумали для написания кодеков!
              Ответить
          • Так люди обсуждают то что уже получилось и есть реальный результат а ты со своими советами иди на юух.
            Ответить
            • иди пиши кодеки на АСМ
              результат на SourceForge мы ждем! А то пиздаболить тут все горазды про реальные результаты а как надо реализовать ченить побыстрому так блять сидять день и ночь неделю там где 3 часа надо. мега оптимизаторы блять
              Ответить
              • Тебе говорят про Си, а не ассемблер. Как ты думаешь, mplayer со всеми прилагаемыми кодеками на чём писан?
                Ответить
                • а я говорю АСМ круче и проги на нем лучше работают и максимально быстро а вы со своими сями только ресурсы железа жрете.
                  Иите изучать АСМ и будете писать нормально.
                  Ответить
                  • Ну я использую иногда ассмовые вставки... и в mplayer, они, AFAIK, используются.

                    Как вы сами говорите скорость разработки - очень важный факторов, поэтому конкретно asm используется крайне редко.
                    Ответить
                    • ХА ХА ХА раздвоение личности!!!!

                      А ПУРЕ C я теперь не люблю ещё больше после такой информации :)
                      Ответить
                      • А я _тема_разговора_ теперь не люблю ещё больше после такой информации :)
                        Ответить
                    • xaionaro, давайте я вам объясню в чем дело.
                      В конечном счете что писать и на чем решает бизнес и только бизнес. А бизнес видит следующие вещи :
                      За год стоимость каждого компьютера дешевеет по статистики в 2 раза. Мощности предоставляемые современным железом растет все больше и больше. С другой стороны большинство заказчиков на вопрос : "Когда вам нужен будет этот проект?" отвечают : "Вчера". В таких условиях скорость разработки является критической и в свете мощностей железа им становится абсолютно все равно будет ли проект выполнятся в несколько раз медленнее , чем на чистом си.
                      Ответить
                      • Да, я в курсе. Я прекрасно понимаю позицию моих противников. Меня бесит то, что они абсолютно отказываются понимать что я им говорю :)
                        Ответить
                    • С другой стороны есть главный технический императив : управление сложностью. Программы написаные на низком уровне естественно работают быстрее , но только при условии, что они написаны. Сложность , возростает экспотенциально , чем более на низкий уровень разработки переходят разработчики. В таком случае многие проекты просто невозможно разрабатывать на Pure Си, по крайней мере полностью.
                      Человеческий мозг к сожелению ограничен своей некчемностью :-D. Если вы пишете на си , то помимо главной задачи перед которой вы стоите вам приходится концентрироваться на разных побочных задачах. Поскльку вы человек , то вы будете совершать ошибки и каждая побочная задача помимо времени написания требует времени на отладку ( которое порой достигает 80 % от всей разработки). В конечном счете вы можете просто захлебнутся под весом этих побочных задач.
                      Кроме того вызывает сомнение качество решения побочных задач. Кто решит задачу лучше : тот для кого эта задача стоит главной или тот для кого эта задача является побочной? Понятно же, что тот для кого эта задача главная. С другой стороны проект даже маленького размера требует решения самых разных задач : взаимодействие с сетью, с базой данных, с пользователем, с файловой системой, вычисления и прочее прочее прочее. Вы уверены, что сможете освоить и освоить достатчно хорошо все эти темы, и написать для их решения свой код? Вообще по каждой области нужен свой дорогостоющий разработчик. В итоге это все дорого и еще сложнее в разработке , потому что надо еще налаживать взаимодействие между этими разработчиками.
                      А теперь представьте, что каждый из специалистов даст вам уже готовые свои решения. Да они будут обобщенными и работать будут медленнее, чем заточенные под ваши задачи, но эти решения уже есть и не надо тратить на них время.
                      Ответить
                    • В конечном счете при разработке любого мало мальски серьезного проекта сначала изготовляется выработка требований в которую производительность также вкладывается. И пока технология\стороняя библиотека или готовый алгоритм удовлетворяет этим требованиям выбирается именно она.

                      То ПО , которое вы привели в качестве примеров на Си является фундоминтальным. Чем более фундамитальным является ПО , тем кретичнии для него время выполнения и именно поэтому необходимо выбирать си\asm или другие технологии , где скорость выполнения ставится во главе угла. Чем же выше уровень самого проекта ,тем менее важна скорость выполнения, а значит можно ей пожертвовать , чтобы облегчить жизнь программистов и кошелька бизнесменов.

                      Кроме всего прочего в конечном счете как правило хороший или плохой продукт выходит зависит не от платформы на которой проект разработан, а от того какими руками вы его разрабатывали. Если для решения задачи вы применяете алгоритм со сложностью O(n^3) вместо O(n) или копируете данные кадлый раз , вместо того , чтобы хранить их статично(как в сабже) , то вам ничего не поможет.

                      ЗЫ
                      За разработчиков стыдно. Столько хамства и мата...неприятно читать.

                      PSS
                      Писал в несколько сообщений т к больше 2000 символов нельзя ((
                      Ответить
                      • охуеть и не лень стока букв писать этож говныкод.ру :)))
                        ну я конечно плюсанул поглядим что наш дорогой студент сможет возразить.
                        Ответить
                        • ЗЫ
                          За разработчиков стыдно. Столько хамства и мата...неприятно читать.

                          Пусть прочувствует что его ждет в реальном мире после института :)
                          да и потом этож говнокод всеж
                          Ответить
                      • Естественно, в процессе написания кода на Си, можно допускать ошибки, но ведь с опытом человек становится опытнее (масло маслянное), и ошибки начинает допускать реже.

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

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

                          Предлагаю запостить следующий говнокод и поглумиться над ним :)
                          Ответить
                          • ладно и правда достало уже

                            private static bool IsDigit(char symbol)
                            {
                            return ((symbol >= '0') && (symbol <= '9'));
                            }
                            Ответить
                            • давайте обтимизаторы найдите в моем коде ошибку
                              Ответить
                              • Вот, между прочим, код стандартного IsDigit (взятый из Рефлектора):

                                public static bool IsDigit(char c)
                                {
                                if (!IsLatin1(c))
                                {
                                return (CharUnicodeInfo.GetUnicodeCategory(c) == UnicodeCategory.DecimalDigitNumber);
                                }
                                return ((c >= '0') && (c <= '9'));
                                }
                                Ответить
                        • А давайте предположим, что нам неизвестно, что символы '0', '1', '2', ..., '9' располагаются в кодовой таблице подряд в таком порядке. Ведь это не единственно возможное расположение. Посмотрите, например, на клавиши на клавиатуре. Тогда данный метод должен быть сложнее.
                          Ответить
                          • так так так хочется услышить мнение студента сначала
                            Товарищ студент повернутый на оптимизации выдайте нам ваши предложения
                            а после мы выдвинем свои :)
                            Ответить
                            • как я уже сказал матод
                              private static bool IsDigit(char symbol)
                              {
                              return ((symbol >= '0') && (symbol <= '9'));
                              }


                              любители рефлектора говорят что это стандартный метод в .нет
                              Так предложите ваши идеи по оптимизации данного "стандартного" метода!

                              даем вам время до вторника :)

                              Все ждем товарища студента повернутого на оптимизации :)
                              Ответить
                              • по моему тебе этот метод и втирали... начиная с 3 или 4 поста...
                                Ответить
                                • Товарищ вы тупой?
                                  я же сказал что этот метод не оптимален.
                                  Ответить
                                  • зачем тогда быть против всех входя в их число?.. товарищ студент по моему и предложил данный вариант в самом начале обсуждения... вот здесь http://govnokod.ru/1565#comment5123
                                    Ответить
                        • чую студент спекся
                          Ответить
                        • Ладно как и обещал

                          Мой вариант
                          private static bool IsDigit(char symbol)
                          {
                          return ((symbol <= '9') && (symbol >= '0'));
                          }

                          Думаю что мой вариант будет работать примерно в 2 раза быстрее чем у микрасовта :)
                          Ответить
                          • Зашел сюда чтобы написать про перестановку местами условий в порядке возрастания вервоятности выполнения для случая логического И, но чую опаздал))

                            никто случаем не подскажет, в данном случае с оптимизация работает только под отладчиком или нет?
                            Ответить
                            • перестановку местами условий в порядке возрастания вервоятности выполнения
                              + умножить на затраты по выполнению

                              всегда только так!!! в простых случаях может и роли не сыграет большой но когда условие более сложное то оптимизация будет офигенная :)
                              Ответить
                              • Нужно только смотреть чтобы не стояла опция компиляции "complete boolean eval", а то толку не будет.

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

                                  Тут главное сам подход к оптимизации сначала оптимизировать логику а уж потом реализацию
                                  Ответить
                                  • Вот выражение return ((a<='9') && (a>='0')), а вот код порожденный msvc-2005:

                                    movsx eax,byte ptr [a]
                                    cmp eax,39h
                                    jg isDigit+3Ch (4113BCh)
                                    movsx ecx,byte ptr [a]
                                    cmp ecx,30h
                                    jl isDigit+3Ch (4113BCh)

                                    Как и ожидал)) Лишний джамп в серединке.
                                    Ответить
                            • && и || по определению выполняют short circuit (в отличие от & и |)
                              Ответить
                              • Но стандартная версия работает иначе: она находит все цифры Unicode, а не только арабские десятичные. Их, оказывается, 230.
                                Ответить
                        • Любопытно что нам скажет "человек очень замороченный на оптимизаци, поэтому C# я изначально ненавижу" теперь?
                          Ответить
                          • Интересно, а чё там ещё за цифры?
                            Ответить
                            • Видимо, это те же 0-9, но в других алфавитах. Например, 0x0660-0x0669 (٠١٢٣٤٥٦٧۸٩) - цифры арабского письма.
                              Ответить
                              • Офигеть.. и их надо обрабатывать??
                                Ответить
                                • Сам-то как думаешь?
                                  Ответить
                                  • я бы не стал

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

                                      Гологуб тут носился со Sweden yes, так вот Denmark тоже yes
                                      https://www.rbc.ru/rbcfreenews/64e8c7d29a7947dcd596e781
                                      Ответить
                                      • > Причем речь идет не только о Коране, а также о Библии или Торе, уточнил министр.
                                        – но гологубы-то конечно выдрали только что-то одно™

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

                                          Вдумайтесь блядь: за зжигание куска бумаги предлагают давать два года. Мир ебанутый.
                                          Ответить
                                          • родился – уже во всём виноват. и до пенсии замаливаешь грехи

                                            постмодернистское рабство
                                            Ответить
                                            • Ты — ничтожество, жалкий грешник, урод, всё в тебе, что есть — это зло и грех, тебе приготовлены вечные муки, страшный суд, ад, и погибель, ад, и погибель...
                                              Ответить
                                              • помедленнее, я записываю!
                                                Ответить
                                                • Этому баяну больше лет, чем некоторым обитателям ГК
                                                  https://www.youtube.com/watch?v=d_Dk27-x_4Y
                                                  Ответить
                                        • чуете, какой прошли путь от Ютланд Постен до двушечки за оскрабление чувств
                                          Ответить
                                          • тоньше надо просто работать

                                            подъёбывать граждан так, чтобы они думали, что это похвала

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

                                      Да, ошибиться при обработке цифр можно.

                                      Арабы пишут числа в том же направлении, как мы, а остальной текст — в другом. Т. е. число 123 они начинают писать с тройки, а перед началом текста ставят символ RLM (right-to-left mark), так что число в итоге выводится, как и у нас, единица слева.

                                      И в этих переключениях направлений (RLM, LRM) можно запутаться.
                                      Ответить
                                      • В Юникоде ещё такая фигня есть:

                                        https://en.m.wikipedia.org/wiki/Arabic_letter_mark
                                        Ответить
                                      • Да, байт-ордер чисел и букв молжет не совпадать.


                                        У нидерландцев и немцев порядок чисел не тот, что у русских и агличан.

                                        "24" пишется как "четыре и двадцать"
                                        Ответить
                                      • это касается любого rtl письма? например, иврита?

                                        как они сами ёбу не даются с таким))
                                        Ответить
                                        • Еврейские цифры сейчас почти не используются (ими нельзя записать число больше 999, поэтому их оставили для украшения, как римские). В идише сейчас используют наши цифры, можешь заметить на he.wikipedia.org

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

                                          Мусульмане Индии и Китая используют модифицированное арабское письмо.

                                          У кого ещё сейчас rtl, я не вспомню.
                                          Ответить
                              • 0x0666
                                Ответить
          • Ну как, получилось у кого-нибудь?
            Ответить
    • Пиздец долбоёбы... :D
      Ответить
    • Нихуясе сколько быдлокомментов, раньше 2-3 но по теме, а здесь больше сотни, но все УГ. Надо ввести тут инвайты.
      Ответить
    • показать все, что скрытоВыкладываю пост одного моего знакомого, очень востребованного и уважаемого программиста ( для непонятливых типа "алкоголик" или как там его -- много бабла гребет):


      Я надеюсь, сегодня ни у кого нет сомнений, что тех, кто пытается учить программировать на Фортране, нужно изолировать от общества. Почему до сих пор у кого-то есть сомнения на счет тех, кто пытается учить программировать на C#?!!

      C# напару с Джавой — это Фортран с Алголом, только чуть-чуть посовременнее!

      Почему людей смущает запись
      integer function f(n)
      integer n,

      но до сих пор не смущает public static void f(int n) или A a = new A()?

      C# — это абсолютное говно в последней инстанции! (Джаву я для краткости буду опускать.) Хуже нет ничего. Все, что хуже, уже умерло. Когда в C# добавляют всякую фигню из динамических языков программирования, это мне напоминает добавление возможности объявлять рекурсивные функции в Фартране 90. Ура! в Фортране 90 появилась возможность писать

      recursive function f(n) result (res)
      integer n
      integer res
      Ответить
    • показать все, что скрытоВ C# с каждой новой версией тоже все становится удобнее и удобнее!

      Это должно писаться не длиннее, чем «(def f (n)» или «def f(n):», потому что смысла в этой конструкции ровно столько. В Перле все пишут $_ и прочие $что-то и ни один программист из-за этого еще не запутался. Короткие мысли должны выражаться коротко! Этим Перл хорош.

      А C# — чертово убожество!

      И это убожество у нас в институте, к примеру, используют не только студенты! Им-то как раз разрешается быть дураками, они в конце концов для того в институт и пришли, чтобы их научили ими не быть. Нет, ребята, не туда пришли! У нас большинство курсов базируется либо на Билдере (нет, не на C++, а на Билдере -- это оказывается есть такой язык, если кто-то не знает), либо на Visual Studio (тоже такой язык), либо у самых продвинутых на C#! Те, кто программирует на C# знают, что Фортран 77 используют только неудачники, а настоящие программисты пишут на Фортране 90! Ой, я имел в виду, C/C++ используют неудачники, настоящие программисты пишут на C#.

      «Для создании больших, сложных приложений корпоративного уровня, подходит лучше всего C#.» Да! А для решения задач мат-моделирования и других «матерных» задач, лучше всего подходит Фортран! Везде, где «мат» или «числ», там Фортран. А для написания бухгалтерских приложений, луче всего подходит Кобол! А Питон — это вообще скриптовый язык.
      Ответить
    • Был тут на конференции Микрософт, слушал доклад Сошникова (shwars.livejournal.com) про F#. Дмитрий Валерьевич начал с вопроса залу «Какой у вас любимый язык программирования?». Отгадайте ответ? Черт, такая аудитория, сожрет все, что ей дадут. О! В F# есть каналы! Каналы были еще в 80-е годы! С их использованием были написаны библиотеки пользовательского интерфейса с окнами и мышками, когда для своего DOS-а Микрософт еще не написала ни одного языка, заканчивающегося на #.

      Я, собственно, про F#-то ничего плохого не хочу сказать. Есть каналы — и хорошо, отлично даже. То, что чисто функциональный код хорошо параллелится — тоже хорошо (он правда и 30 лет назад хорошо параллелился). Я просто хочу сказать, что аудитории, где у большинства любимый язык C#, не нужно рассказывать про высокие материи: им скажи, что F в названии F# — это первая буква от Fortran и они будут готовы верить, что F# -- это мегаудобный язык для программирования приложений с «мат» и «числ».

      P. S. Не все те, кто пишет на C#, плохие программисты, конечно. Но те, кто пишут на нем добровольно и с удовольствием, — точно. Они могут при этом быть хорошими людьми, но хорошими программистами быть не могут. А тех, кто пытается учить на C#, этих точно нужно изолировать.
      Ответить
    • Неаргументированный наезд. Одни эмоции и оскорбления. Если вам больше нечем подкрепить свои слова, покиньте, пожалуйста, раздел c#.
      Ответить
    • Прикольный холиварчег :)
      Насчет самого кода: по-моему это просто калька с фсяких-там-скриптов типа ("1".."9").include?(symbol)
      Чо всех так удивило то же самое в цэшарпе? :/
      Ответить
    • считаю что с# довольно просто и удобный язык для написания приложение под ВИндоус. Он будет полезен школьнкикам, которым важен результат а не процесс. Считаю что заблуждение-уничтожить всех программеров от язка С# - чистый бред.
      Ответить
      • сишарпер, долго думал?
        Ответить
      • а зачем их уничтожать?
        скоро им .NOT окончательно мозги выест и их можно будет использовать как дешевую замену роботам-уборщикам

        омич, дату-то видел?
        Ответить
    • Это код из библиотеки `isTsyfra` от автора пакета `isBukva`
      Ответить
    • Файк, тут это
      https://twitter.com/kosa_media/status/1695054935128256839

      Я давно это предсказывал
      Ответить
    • человек сошел с ума https://fractalfir.github.io/generated_html/rustc_codegen_clr_v0_0_1.html
      Ответить

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