- 1
- 2
- 3
- 4
static bool is_digit( const char ch )
{
return (ch >= '0' || ch <= '9');
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−52
static bool is_digit( const char ch )
{
return (ch >= '0' || ch <= '9');
}
пятничный код, писаный за час до ухода с работы. час после написания был убит на то что бы понять почему `is_digit('/') == true`.
Но вот чего не понимаю я, так это нахера раз за разом плодить isdigit фунции! Почему нельзя поискать в стандартной библиотеке?!
А если в стандартной библиотеке такой функции нет? Это же сишка. И вообще может быть ему ещё потребуются цифры IVXLCDM из древнего рима.
>Назвали бы по человечески и не ибали бы моск.
Как ты посмел покуситься на швитое: сишко- кресто- блядские значочки?
Сишкобляди негодуют.
Это всё тот же глюковатый Лазарь.
А нам всё равно
Что жопа что говно
Какой багор )))
Вы ебанутые там все что-ли нахуй?
С момента выкидывания на мороз XDDM (примерно 15 лет назад) уже не актуально
Какой пиздец )))
Доктор Дизель
http://www.programmersclub.ru/
Этомой любимый форум теперь, словно бы я сам его написал
https://programmersforum.ru/showthread.php?s=5418271ba02f889c2e4f979 c137621de&t=345594
Подскажите, пожалуйста, есть ли разница в написании кода для Win 10 и Win server ? А
yte[] buffer = new byte[48];
client.Receive(buffer);
string komanda;
komanda = Encoding.UTF8.GetString(buffer);
✔️ Предлагаю профессиональную разработку сайтов от 3 т.р.!
- Верстка по готовому шаблону из Figma, PSD, Adobe X D, Avocode, Zeplin активно применяя HTML5 и CSS3.
Создание сайта под ключ или правки вашего существующего сайта. В работе использую как сайты без движка на чистом HTML/CSS так и WordPress.
Кто поможет, буду очень благодарен. Заранее спасибо.
Пиздец. Горите в аду.
Написал редактор, но с ошибкой, которую найти не могу, он считывает все текстовые файлы, но если там есть пустая строка, то он останавливается.
пожалкйста скажите что это сообщение 2000-го года
ну тащемта в стандарте есть "человеческие" кейворды or/and етц, вот только я случаев их использования видел 2 раза
Такой-то кодстайл.
на самом деле немного даже обидно что народ не знает что в крестах уже давно есть not/and/or.
Не люблю это слово, неоднозначное оно... Где-то его юзают тупо как !empty(), а где-то - когда реально контейнер забит под завязку и в него больше ничего не засунуть... В итоге всегда приходится доку читать.
хуясебе
// Да почему ж не компилируется?
bitwise and
not and
других не видел
Хотя, такое обычно называют andM
там есть "or" и "||"
Может для него это вообще конкатенация
стандартная библиотека умеет только плюс, минус и ребут. добро пожаловать в программирование встроенных систем.
И это нужно не только во встроенщине, а, например, чтобы загрузочное ядро не писать на ассемблере.
до кучи дорога еще больее длиная.
но я не понимаю нафига тогда на си это писать?
какое преимщуество у сей перед асмом если нет ни картинок, ни разговоров ни стека ни кучи?
деталей не знаю, но на линухе - официальная реализация ACPI писаная преимущественно Intel'овцами - это 4МБ сырцов.
удачи пытаться это счастье на голом железе запускать.
ЗЫ то ли я отстал от времени, то ли народ совсем не понимает catch-22 бутстрапа.
ты совершенно прав
acpi машина тяжеловата для таких задач)
Да я все понима: чтобы что-то сделать нужна операционка, а операционки у тебя нет.
Окей, допустим я гружусь через API биоса и железа. Ну там сначала заполняю процессору адрес таблицы GDT, потом ставлю бит в контрольный регистр итд
Это я все понимаю
но вопрос: нахуя это на сях-то делать??? зачем эти 100 строчек на асме обарачивать в функцыю на сях?
народ просто не хочет парится с асмом. поэтому на асме пытаются делать только самый минимум.
100 строк асма может быть для любителей и не сильно много, но если тебе несклько проектов поддерживать на разном железе, то у тебя потенциально старновится несколько "100 строчек асма". в добавок - "100 строк асма" которые не всякий может написать или поправить.
Потом инкрементил счётчик и смотрел те, где есть какой-то пиздёж
Всё хочу сделать юзерскрипт, который добавлял бы кнопки перехода на следующий и предыдущий говнокоды, да лень
Он, видимо, о стартовом коде BIOS'а, который просыпается в темноте и без памяти. Вот там да, чтобы юзать память её надо сначала включить... А до этого или хаки с кешем или romcc...
> 40?
https://en.wikipedia.org/wiki/Martin_Bormann
небось в децтве гонял tasm, turbo c и borland pascal
Но по какой-то причине 99% программистов умеют только канвас в джаваскрипте, а всё что ниже уровнем для них темный лес
Нахуя вообще что-то про комптютеры знать?
но открою тебе страшную тайну: чем шире у тебя кругозор, тем больше идей ты можешь позаимствовать, тем лучше ты понимаешь как все НА САМОМ ДЕЛЕ работает, тем больше всего интересного ты можешь придумать, тем больше проблем ты можешь решить, тем ты круче как специалист, тем больше разных работ ты можешь выполнять, и наконец чтобы мозг не засох его нужно тренировать изучая новое.
ЗЫ на самом деле, параллели между разными прикладными областями проводить могут не многие. поэтому и знания для них из других областей просто обуза. высшее образование помогает этот барьер перейти, но не всем удается.
Ну правда: чем Enterprise service bus не System Bus?
ну так стать программистами не всем удается
многие так и пишут одинаковый бойлерплейт на галерах годами.
Никогда не видели энтерпрайзника у которого 15 лет опыта написания DAO бинов?
вот даже в Spring Boot
Вернее, не только лишь не многи. Мало кто это может делать.
Так что ты сравнил ужа с ежом.
фирмварь и загрузка компа это тоже дженерик вещи
я же не предлагаю тебе выучить наизусть аргументы утилиты wbadmin, правда?
bormand: 13
CHayT: В системе с каким основанием?
bormand: 13
CHayT: В системе с каким основанием?
...
там надо "знать" по какому адресу сидит какой девайс и как его включать
а ROMCC это безстековый си?
А через анус никак нельзя узнать?.. Я люблю через анус.
Но ACPI это еще пол беды. Раньше была в PCI такая тема: Interrupt routing. Вон там можно убиться
ты можешь положить целое число (или символ) в регистр, и вызвать функцию, которая её оттуда считает.
Стект тебе не нужен впринципе
Правда, у стандартной молоки переголова больше, чем у стека, поэтому придётся костылить более лёгкий заменитель.
Единственное, для чего стек необходим, так это для адресов разврата. Да и то на некоторых рахит-тинктурах можно справиться без него: класть адрес разврата в регистр, а если тебе из функции нужно вызвать функцию, то сохранять его где-нибудь (маллокать).
А нет, не то. Там будет список функций, не ссылающихся на ОС. А список функций, не использующих оперативку, был где-то ещё. Может быть, в ROMCC?
Close enough. В MS-DOS времена это было нормой. Не то что бы OS таки и подталкивала ею пользоваться, была чем то удобным/надежным/незаменимым(*). Сейчас подобный паттерн проявляется в ARM системах где OS вообще нет.
(*) Сейчас я понимаю почему в те времена юниксоиды над MS-WinDOS смеялись... Они уже в 80х настоящими ОС пользовались. А вин/досы до сих пор... аптайм в один месяц только с трудом, и программировать под них как было напряжно, так и осталось.
в 85 году у серьезных компов уже была виртуальная память, защищенный режим, многопользовательскость, вытесняющая многозадачность, безопасность на уровне fs и API на C.
А у персоналок был API на прерываниях в firmware, один пользователь и 640 к памяти на всех. Прямо как у большых компов 60х.
SGIшки на которых делали второго терминатора (1991) столи 9-12 штук. White box PC в те времена стоили 1.5-3 штуки. Производители не дураки и не торопились цены сбрасывать. Очень сильно не торопились. Наличие операционок тоже роль играло - и кроме некрософта и SCO никто в это деньги не вкладывал. линух и фри-бсд не от хорошей жизни люди (любители!) делали.
ебать ты олд
> нахера раз за разом плодить isdigit фунции!
Зачем использовать готовую, отлаженную десятилетиями функцию из стандартной библиотеки твоего языка, если можно написать свою и бажную?
Ну тесты писать конечно надо. Только не так.
это говорит питониста, у которого вот уже 10 лет не могут перейти с двойки на тройку потому что не могут дговориться о всех этих str, unicode, bytes, литералах b'', u'' итд
1. Ебанутый синтаксис
2. Что есть в пхп тут нет
3. Листы, словари, кортеджи
4. Нахуй всратый юникод.
5. Динамическая типизация
6. Нет адресации и указателей
SQL инджекшенов из коробки?
Я всегда говорил, что сишечке не хватает диапазонов и множеств.
ЗЫ классическая реализация isdigit/etc для ASCII/Latin1 это массив 256 байт, каждый байт это бит маска к каким классам эта буква принадлежит.
Уже что-то. Хотя хотелось бы и в других местах диапазоны увидеть.
> ЗЫ классическая реализация isdigit/etc
Собственно <ctype.h> и рассчитывает на то, что в исполнимый файл будет вшит этот массив. Хорошо, что в байте только 8 бит, а то пришлось бы таскать больше мусора.
диапазоны плохо сочетаются со статической памятью. да и динимику делать с ними тоже опастно.
думаю что на каком буст пп (boost_pp_for) можно сваять раскрытие `'0' .. '2'` в `{ '0', '1', '2' }`. в 11ых крестах вот такое уже работает - `for (char a : {'0', '1', '2'})`. вопрос сможет ли компилер это съоптимизировать.
вот на этом:
clang догадался как соптимизировать - а gcc нет. (можшь на https://gcc.godbolt.org погонять)
Неужели в вычитание и сравнение?
гцц в лоб генерит (в зависимости от уровня оптимизации) либо таблицу с числами и цикл, либо пачку сравнений и джампов:
код почти идентичен у кланга и гцц:
... вот поэтому в крестах и нет диапазонов.
https://godbolt.org/g/OKnVrx
seg000:2D83 push ax
seg000:2D84 mov ax, 5Ah
seg000:2D87 call sub_14D8
seg000:2D8A mov ax, 61h
seg000:2D8D push ax
seg000:2D8E mov ax, 7Ah
seg000:2D91 call sub_14D8
Если интересно, то это код, сгенерированный антикварным TP 3.0, в котором ещё не было модулей и соглашения о вызовах были другими. Если я правильно, понял, то через ax передаётся последний аргумент встроенных функций. Такая вот оптимизация.
Выхлоп дизассемблера (BP 7.0):
На вхоже два непересекающихся диапазона. Однако, оптимизатор догадался вообще не создавать множество в памяти, а сделать всего четыре сравнения.
я про битсет в крестах думал, но поленился. и в крестах это только bitset и делается, потому что нативного типа данных никакого не хватит. но так как это битсет, у него и статической инициализации никакой нет, придется через переменные крутится извращатся инициализировать.
Замечательно, что на x86 уже есть хорошие инструкции для работы с такими битсетами (bt/btr/btc/bts).
И да, компилятор иногда умничает, и, если множество представлено константой, то и вовсе его выкидывает, как в этом примере.
http://cs.nyu.edu/~bacon/setl/doc-legacy/setlprog.pdf
SETL имел алголоподобный синтаксис, появился на десятилетие раньше Си и Паскаля, но почему-то его идеи нашли применение в Питоне, в ECMAScript (да и то реализована малая часть), а в языки со статической типизацией его конструкции вводить боялись.
Она что либо представляет из себя? Не пробовали? Заставка с видом на вечерний Берлин смотрится очень романтично.
Не знаю. Дрезден мне нравится больше. Имел счастье там 2 года жить.
А если современный мегаполис - то тогда Франфурт. Оч даже ничего место.
А Бавария... Это на любителя: там жизнь слишком размеряная и консервативная. Я к слову там панельных коробок вообще не видел - но да Бавария большая (деревня). в Германии в принципе панельные коробки редки и есть только в восточной (== пережиток совка), либо дешёвое социальное жильё (== кучи русской и не только пьяни, бабулек и прочего, прям заповедник совка: а вы помните как при Сталине все круто было? потому что эти немцы вообще нифига не умеют. не то что Сталин).
Если тебе нравится размереная спокойная жизнь - то однозначно да. (Но и найти место где жизнь бьёт ключём тоже не проблема.)
С другой стороны, не все легко переносят переезд и отдаление от друзей и близких. И по началу, ни времени ни денег туда сюда кататся не будет. Но Европа/Германия это все равно намного ближе чем какие США (знакомый нелегально выехал - как нелегал прошел через пару нищенских периодов; ~5 лет родителей не видел, пока не легализовался).
https://de.wikipedia.org/wiki/Plattenbau
Вообще платтенбау не имеет отношения к Совку.
https://twitter.com/dasisteuropa
"типичная" мюнхенская высокоэтажка (5 этажей максимум в мюнхене) они может только со сторы выглядят как советские панельные (хрущевкие и брежневские застройки).
большинство (== все что я видел в М) ближе к советским строениям сталинских времен с высокими потолками. и метраж, и цена у них соответствующая.
мюнхен "элитный" город: они там принципиально строят относительно дорогое жильё, которое нормальные служащие могут позволить себе только с трудом. на эту тему тут временами в прессе бывают срачи.
https://de.wikipedia.org/wiki/Neuperlach
https://goo.gl/maps/Pzegq6UfWjn
ЗЫ ну тут почти это и описывается:
https://de.wikipedia.org/wiki/Neuperlach#Gegenwart
никаких сравнений не нашел - народ рекомендует просто попробовать, но лазарус неожиданно достаточно большой (что-то в районе 250М на бубунте) и у меня так руки до него и не дошли.
Но если формы не нужны, то как ide - более-менее. Поглупее чем дельфи, чаще не может угадать тип переменной, но в целом можно пользоваться. Разве что бесит когда он в каком-то одном файле какую-нибудь хитрую конструкцию не может распарсить, и из-за этого весь автокомплит отваливается, вместо этого он будет посылать к месту с "ошибкой".
В языке отличия. У генериков другой синтаксис, лямбд нет и не будет(а в дельфи есть), зато перегрузка операторов понятнее сделана, есть "+=" и препроцессор почти-сишного уровня. Но если ничем таким не пользоваться, то совместим.
Оптимизация - ну, печальная, с дельфи не сравнить. Зато в лазарусе программы маленькие, а в дельфи они с каждой версией все больше весят.
Недавно, когда я рассказывал, как мы пишем тесты, я уже упоминал, что в TypeScript’е появилось новое ключевое слово using. Оно позволяет нам сделать код чище и более линейным, избавившись от try/finally.
>>>
GCбляди, и их ручное управление ресурсами. Языки с GC -- не безопасные, старайтесь ничего серьезного на них не писать
Там короче 10 дней учат сети, 10 дней учат линукс, 10 дней учат питон, и вжух
алых роз
это для вас https://twitter.com/Q0MT6pFmbVqynsM/status/1751858160334205205