Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.
- Очевидный GCC. - clang: оче годно, батя рекомендует. - Intel C++ Compiler: оптимизации, тысячи их. - Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте. - Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное. - TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.
Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002) Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.
Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994) "Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).
Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.
Ben Klemens "21st Century C: C Tips from the New School" (2012)
Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)
Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)
- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов). - http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.
>>2245329 (OP) Просвятите. Почему на C пишут для железа чаще чем на C++? Репозиторий ReactOS на гитхабе написан почти весь на C. Так удобнее или есть другие причины?
>>2245453 >Почему на C пишут для железа чаще чем на C++? Потому что у С++ overhead чуть повыше. (особливо если не очень понимаешь, во что выродится твой код) Потому что exception будут недоступны (их можно отключить ключами компиляции). Ну и просто потому что так повелось. На самом деле причин против С++ не так много. Ну и конечно молодые долбоящеры будут пихать везде копирование, вместо ссылок.
>>2245453 >Что в 2022 актуально делать на C? Линковать с С++ кодом - очевидно же.
>>2245495 + потому что раньше, давным-давно, когда деревья были большими, нв всякие экзотические мелкоконтроллеры не сцществовало С++. Но эта экзотика продавалась по цене стакана семечек, поэтому корпорации очень любили пихать такие микроконтроллеры в массовый недорого сегмент аппаратуры для сокращения издержек.
30 центов разницы в цене при многомилионных тиражах имеют значение.
>>2245495 > Потому что у С++ overhead чуть повыше Чтобы убедиться, что это не так, нужно всего лишь... хоть раз реализовать ADT на Си или хоть раз прочитать про constexpr
>>2245453 > Так удобнее или есть другие причины? Единственная причина - читаемость и, соответственно, предсказуемость.
>>2245552 Чтобы убедиться, что это так, нужно всего лишь заменить string (с new) на чары в статических буферах. Или забыть расставить магию в виде nothrow. >ADT А какой у них overhead в сишечке.
>>2245708 > А какой у них overhead в сишечке. Воид поинтеры и соответственно дополнительные маллоки, дополнительные дереференсы и дополнительные копирования (нужное подчеркнуть). Не говоря уже об отсутствии возможности у компилятора сгенерировать качественный код под конкретный тип. Да, в Си можно делать шаблоны на дефайнах, но это крайне неудобный способ. Алсо, в сишке можно посмотреть на колбек в qsort и сразу все понять.
> заменить string (с new) на чары в статических буферах На крестах можно писать свои дешевые реализации под задачу с любым количеством нечитаемой магии.
>>2246490 >соответственно дополнительные маллоки А в плюсах у тебя типа данные волшебным образом размещаются на стеке, да? А потом происходит возврат из текущей функции и приходит дядя Сегфолт Бахометыч
в преддверии хочу написать, что хотя и зашёл сюда за этот года раз 5, успел оскорбить кого только можно. но это не потому что я пидорас (хотя и это тоже) но просто это как-то нас заставляет двигать жопой, что ли. извините меня, ребят.
>>2246588 В плюсах у меня есть placement new, и размер я знаю заранее, поэтому могу разместить объект где угодно, хоть на стеке, хоть >>2246850 в жопе волшебной феи. Опять же, у нас в Си тоже так можно, но сложнее, поэтому приходится каждый раз переизобретать структуры данных под конкретный проект, если важна производительность.
пиши сразу int upper = 200; Мы не в 89 году слава богу, и так можно. Более того создавать переменные как можно ближе к месту их использования - хороший тон.
>>2245552 adt на си вообще без накладок можно на макросах делать, так в коде freebsd было сделано как то а так да, все пердолят через указатель на неопределенный тип, потому что и привычней, и отладка работает, и через границы динамически загружаемых модулей удобно ходить
>>2247296 > Хуевый тон Нет не хуевый. В С89 заставляли совать декларации в начало не для того, чтобы ты кушал и нахваливал. Просто технические проблемы тех времен, однопроходные компиляторы, было проще знать размер стекфрейма заранее. К счастью, те времена давно прошли, и смысла в этом ограничении больше нет.
>>2247306 > Если все переменеые обьявить в начале функции То ты не только при изменении функции, но даже при чтении будешь прыгать туда-сюда, потому что какие-то пидары раскидали связанные по смыслу куски кода в разные места исходника. А еще ты очень часто лишаешься инициализации при объявлении, что делает твой код еще более ущербным. Зато ты можешь продолжать дрочить на технологии семидесятых.
>>2247316 > Высосаное из пальца преимущество Действительно, вот почему во все языки массово тащат const, а в Си const принято только указателям расставлять - это чтобы анон мог не только оторвать переменную от использующего ее кода, но еще и значение этой переменной где-то в третьем месте задать. Зато как здорово код читается!
> В редакторах можно делить окна Замечательно. Нам нужен специальный редактор, чтобы дрочить на багофичи семидесятых.
>>2247306 Нахуя тебе переменные перед глазами, если ты не видишь кода который их использует? >>2247323 Константы хорошо описывают иммутабельную природу переменной.
Функция должна быть маленькой, тогда никакой проблемы с переменными в начале. Так легче визуально оценить размер фрейма. const для локальных - это мусор навроде венгерской нотации. Вместо структурирования кода дебилы блямкают одноразовые переменные с const.
Начал изучать С. Удивлен вот этим абзацем: >При компиляции функции для ее параметров выделяются отдельные участки памяти. При этом для параметров типа float формируются в памяти объекты типа double... Зачем для float'ов выделять двойную, избыточную память? В чем тогда смысл использовать float'ы? 1. Экономия памяти в куче? Оперативная память и близко давно уже не узкое место, её можно напихать сколько угодно. 2. Некоторые процессоры умеют вычислять только double? Ну так некоторые умеют, некоторые нет, видеокарты только во float'ы умеют. Поясните.
>>2247482 >Оперативная память и близко давно уже не узкое место, её можно напихать сколько угодно. Может ты лучше в другой язык пойдешь? Оно тебе с таким подходом не нужно.
>>2247482 >для параметров типа float формируются в памяти объекты типа double Хуирются. Значения типа float преобразутся в double. В памяти (не на стеке параметров) хранятся как float. > Некоторые процессоры умеют вычислять только double? PDP-11 не имел отдельных команд и регистров для float. Каждая программа начиналась с команды, включавшей режим double. Поэтому коньпилятор Ричи все float подвыражения расширял в double, а printf принимал %f как double. В C89 первое убрали, а вот printf никто не стал менять.
>>2247327 Ни в одном языке прогромирования не рекомендуется раскидывать переменные по телу функции. Это плохой тон. Использование можно посмотреть с инструментом view usages, который, кроме блокнота, есть везде.
>>2247482 а не читай дурные учебники по си, которые вводят в заблуждение расширение типа аргументов происходит в 2х случаях - если объявление функции составлено в старом стиле, и второе для функции с неопределенным числом параметров для аргументов попадающих в многоточие, и все, согласись, сегодня это довольно специфические условия, верно? по сути это нужно знать только для семейства функций printf если объявление функции составлено в новом стиле, но никакого расширения типа аргументов (в том числе float в double) не происходит ты какой учебник читаешь? какого то русского автора да?
Вот вам говна с хабра принес В двух словах: Переменные должны объявляться в начале логического блока, в котором они используются, а НЕ в начале функции или программы.
>>2247745 >Ни в одном языке прогромирования не рекомендуется раскидывать переменные по телу функции. А в кодстайлах рекомендуется. > Использование можно посмотреть с инструментом view usages, который, кроме блокнота, есть везде. А можно не заниматься хуйней и семантически разделять блоки кода, объедения данные и их поведение/обработку.
>>2248125 Я не вижу смысла спорить и что-то доказывать. Большие программы делаться на модули, модули на функции, функции на блоки внутри функций. Если бы вам долбаебам сказали бы в 89 году, что все нужно писать в одном файле, так вы бы до сих пор так и делали, рассказывая про инструменты редактора которые позволяют во всем этом говне ориентироваться. У тебя нет понимания о том, что такое ясность и удобство восприятия информации. Ты привык к инструментам и постоянному перескакиванию с vu.
>>2248349 Wl говорит драйверу компилятора (сс/gcc), какие флаги передать линкеру (первый вариант). У линкера (ld) такого ключа нет, и он нахуй не нужен (второй вариант), поэтому ты просто указываешь напрямую (третий вариант). Если ты компилишь без -c или собираешь cc *.o - можешь выбрать 1 или 3, а если сам вызываешь линкер, то очевидно у тебя есть только 3.
>>2248139 лол, в 89 году раскидывали по разным файликам чтобы компилировалось быстрее, а не из желания че-то там разбить на функциональные модули перекомпиляция большого проекта занимала несколько часов на персональных же пека даже компиляция одной единицы трансляции занимала ощутимое время
>>2249686 Да это понятно. Меня файловая система интересует, а не ядро. Хотел заебенить челлендж из ролл-листа, где bootloader (with extended file system), начал было писать под ext2 и тут напоролся на то, что в ext2 куча 32битных объектов, а в i8086 16-битная шина. И стоковая ext как и где скомпилируется, такой и будет. Теперь не понимаю формулировку задачи, и что там требуется.
>>2249686 Да это понятно. Меня файловая система интересует, а не ядро. Хотел заебенить челлендж из ролл-листа, где bootloader (with extended file system), начал было писать под ext2 и тут напоролся на то, что в ext2 куча 32битных объектов, а в i8086 16-битная шина. И стоковая ext как и где скомпилируется, такой и будет. Теперь не понимаю формулировку задачи, и что там требуется.
>>2247823 Читаю метанит краем глаза, т.к. удобно с телефона читать. Пишут что он - сжатый конспект книги Брайана Кернигана и Денниса Ритчи. Т.е. вроде должно быть норм. Что скажете о метаните? Читать? Дропнуть?
>>2250077 А нет, потому что по стандарту long должен уметь минимум -231 ... 231 - 1.
>>2250080 Так же, как и 32-битный x86 делает 64, или 8-битный МК делает 16-32 - будут два регистра, четыре регистра, дополнительные инструкции для арифметики (всякие там adc), часто лишние загрузки в память и обратно, если регистров не хватает. Все это может быть сильно медленно, но работать будет.
>>2250744 k&r 280 страниц, причем собственно текст книги без приложени - 140 страници, неужели выросло поколение которому нужен конспект даже таких книг? тогда это пиздец, замолкаю
>>2250994 и -1023 ... -1073 выдаёт 0 - да хрен с ним, как он такую экспоненту хранить может? бред какой-то fman = frexp(ldexp(0.5, -1073), &vexp); printf("%f %f %i\n", ldexp(0.5, -1073), fman, vexp);
наверно это какой-то мусор из стека, процессора, специфичного буфера?
понятно, frexp(): If x is a NaN, a NaN is returned, and the value of exp is unspecified. If x is positive infinity (negative infinity), positive infinity (negative infinity) is returned, and the value of exp is unspecified
но разве тогда ldexp() не должен вернуть просто 0? If the result underflows, a range error occurs, and zero is returned. If the result overflows, a range error occurs, and the functions return HUGE_VAL, HUGE_VALF, or HUGE_VALL, respectively, with a sign the same as x.
Типа на какой-то машине может быть msb вместо лсб, и всё пойдёт по пизде? Порядок байт тоже влияет (когда например мапится не на один байт, а на два и более) ?
>>2253038 В таком виде абсолютно никаких подводных, кроме небольших накладных расходов на проверку бита по сравнению с массивом отдельных bool или size_t. Номер бита в числе измениться не может, это свойство системы счисления (показатель степени двойки). Он может меняться в битфилде, но у тебя-то не битфилд.
Что можно почитать натему системного прогрраммирования под винду? Базу языка я уже знаю. Есть доки майкрасофта, но не сказал бы, что это хороший учебник
>>2254641 Рихтер (не знаю, что там актуально - Windows Via C++), потом какое-нибудь не очень старое издание Windows Internals (там и кернелмод, но все равно надо), потом MSDN по интересующим темам. Если интересует легаси (а тебя интересует, потому что под винду сейчас на няшной не пишут), то еще сверху что-нибудь про GDI и опять MSDN. Если сокеты, то Ohlund "Network Programming for Microsoft Windows", и да, снова MSDN. Вообще, MSDN вполне норм, там в каждом разделе есть введение и описание чего куда совать с примерами. С вопросами можешь сюда приходить.
>>2254673 >>2254673 Благодарю. Рихтер там же аж под семерку писал, если не ошибаюсь? Не устарело? У винды даже битность успела поменяться. А так, MSDN читаю, но это скорее справочник, очень много информации, которую я не очень понимаю, как приминять. Мне бы найти что-то, что могло бы вкатиться в менеджмент памяти. А то я смотрю, у винды дохрена своих функций под это
>>2254689 > Рихтер там же аж под семерку писал, если не ошибаюсь? Не устарело? Появились новые апи, но в целом там все с начала линейки NT тянется. Я поэтому и говорю, что сначала книга, а потом уже и MSDN пугать не будет, там можно прочитать про нововведения.
> что могло бы вкатиться в менеджмент памяти Сначала надо понять, чего тебе в malloc/calloc/free не хватает.
> у винды дохрена своих функций под это Есть VirtualAlloc с друзьями, которая выделяет постранично, есть CreateFileMapping, чтобы выделять из свопа или отображать в память содержимое файла, поверх этого всего есть системный менеджер кучи, поверх него работает сишная куча. Плюс есть еще всякое устаревшее говно еще из 16-битной винды и пачки "локальных" функций у шелла, COM и прочего, которые тоже обертки вокруг системной кучи, тебе это все не нужно, если только в документации не написано, что ты должен использовать именно это.
сап, почему при запуске проги в qtcreator строки меняются местами? На пике на белом фоне это вывод в кьюте. На фиолетовом в терминале запускаю исполняемый файл из папки Debug. Я сам отдаю предпочтение именно терминальному выводу, потому-что там выглядит как должно быть.
Почему? В листинге вроде всё нормально, хотя я не уверен, что умею читать. Адрес структуры идёт в rax, оттуда в eax идут первые 32 бита node, которые и есть type - так ведь? node != NULL, хотя там и так видно.
Не ручаюсь за качество скринов, но с компа всё хорошо видно, например.
Вопрос может быть для /s/, но лучше спрошу тут. У меня в проекте с симейком есть несколько целей и хотелось бы иметь возможность по отдельности вызывать их через менюшку. А нету там такого. Одна цель у меня это компиляция, а другая - прошивка микроконтроллера через программатор. https://doc.qt.io/qtcreator/creator-build-settings.html Вот, можно только добавить "этап сборки", но потом эти этапы нельзя вызвать по отдельности через менюшку. Как же так? Си тут при том что код у меня на нем.
>>2259651 Предполагаю, что ты хочешь просто изменить Run или Deploy в настройках проекта. И уже оттуда дергать свою цель. Потому что это уже не сборка.
>>2259666 Спасибо. >Потому что это уже не сборка. Так-то да, но у меня это такая же цель как и остальные. И мне казалось логичным дергать это как вариант сборки. По крайней мере в CLion оно работало как-то так.
>>2259681 А какими IDE тут пользуются? По моему Qt Creator и для Си неплохо подходит.
>>2259697 >А какими IDE тут пользуются? По моему Qt Creator и для Си неплохо подходит. как скажешь - я в валенках и ушанке. в emacs и autotools. просто сам не знаю на чём сейчас что делают.
>>2259735 Так и было сделано. Проблема не с симейком, при вызове руками эти цели нормально отрабатывают. Хотелось из qt creator все это запускать, а я не туда пытался тыкать, анон выше правильно посоветовал уже. Хотя все равно как-то не очень. А если мне потребуется запускать еще несколько целей? Там опять только одну конфигурацию деплоя можно сделать. Остается еще "Run", но как-то это не очень хорошо.
>>2245329 (OP) Только собрался плотно изучать этот божественный язык и решил качнуть VS 2019 (ибо в VS 2022, при добавлении "Разработка классических С++ приложений" у меня крашится драйвер видимокарты), как его хуй можно скачать с официального сайта. Остался только VS 2022. Мелкософт сам толкает в объятия пиратов штоле?
>>2261787 Пиздуешь на: https://visualstudio.microsoft.com/ru/downloads/ Мотаешь в самый низ страницы и ищешь строчку "Старые загрузки" На пике красным тебе выделил, чтобы не потерялся. Алсо, может не надо тебе в C++, если ты даже ссылку найти не можешь?
>>2261799 >vs это для шарпа, норкоман. Даже комментировать сей высер неохота.
>>2261829 Спасибо. Реально глаза замылило огромными кнопками для скачки 2022, что даже не подумал до футера домотать. Я уже прада нашел старый веб-инсталлер для 19 и кочаю пакеты.
Здравствуйте! У меня вот несколько вопросов возник, а как вообще программы крупные на Си пишутся? я тут пукаю что-то в ncurses и тд, но я вообще не представляю, как делаются приложения под линукс по типу htop, всяких инсталлеров да и просто операционок. Как это все можно на одном Си написать? я даже не понимаю от куда эту информацию взять можно, как придти к такому, для меня это слишком ту мач. Может кто поделиться как к этому идти? или хотя бы примерно ориентир дать, я дальше сам постараюсь разобраться, мне не нужны готовые ответы, а просто хотя бы куда направляться, чтобы я дальше информацию искал. Я правда не понимаю как на Си можно написать что-то такое с GUI в терминале, чтобы оно ещё и какую-то деятельность с ОС вытворяло, хотя бы вот просто какой-нибудь File Manager или текстовый редактор написать.
>>2263515 ну ос - это конечно враньё, потому что на ассемблере всё равно придётся писать. но можешь почитать криса касперски (хз почему у меня такая ассоциация возникла с твоим текстом)
В школе и на первых вузах универа - я писал на си. Тогда - он мне казался удобным и все такое. Но вот, в середине второго курса у нас было ООП. Там давали на выбор С++, С# и жаву. Я попробовал все и остановился на шарпе. Так вот. Первое время мне было сложно. Я писал код в Си-стиле, а классы использовал просто как модули. Ничего более. Классы были большие. Было много статики. Но затем я почитал книжек, и начал пытаться разобраться в чужих репках. Помогли, внезапно, репки жавы, потому что показали, как может быть устроен код в ООП стиле. И МНЕ ПОНРАВИЛОСЬ. Следущие 4 года - я писал исключительно в ООП парадигме. Но вот закончилась учеба в вузе, я магистр, который немного фармил фрилансерством. Нужно было искать работу. И я пошел на завод. На заводе, внезапно, нужно писать на Си. И я - буквально на текущий момент - пытаюсь изобретать способы, как привнести ООП в Си, не сломав то что там уже накодили. Я это могу сделать. Но я понимаю, что оно-то не нужно. Нужно майндсет перестроить обратно к процедурному и структурному подходу. Но это так сложно, когда ты везде видишь объекты, когда ты привык, что за памятью уже следить не нужно, есть GC, который следит за этим, а тебя только иногда какой-нибудь сокет или дескриптор нужно руками освободить. Короче. Есть тут те, кто с ООП-языка обратно на Си переходили? Какие есть лайфхаки, чтобы быстрее переключить мозги обратно? Или проще таки сменить работу и писать в ООП-парадигме?
Да, понимаю, что вопрос не совсем по теме треда, но сам язык я знаю, как компуктеры работают - тоже, а вот момент с майндсетом не дает покоя.
>>2265746 >Есть тут те, кто с ООП-языка обратно на Си переходили? Нахуя? Ебашь дальше на шарпе/джаве/котлине/скале, нахуй тебе этот нищий завод и си усрался?
>>2265769 Ну, тут железочки дают. Я поработал какое-то время на шарпе в вебе и это так уныло было: гоняешь туда-сюда жсоны. А тут - хоп, лампочка зеленая замигала, устройство начало сбор данных с других устройств, хоп другая лампочка, уже красная мигает, значит какая-то ошибка, подключаешься, смотришь код, ага - флешка сдохла, ты с приложухи послал сигнала - хоп, устройство релешкой щелкнуло. Короче, все не так абстрактно, как в вебе, где ты вроде что-то сделал, а поймешь что ты сделал и кому оно нахуй надо - через год разработки, когда придут менеджеры и фидбек от пользователей принесут.
>>2265799 ~60к после всех налогов. Да, когда я работал в вебе - я получал больше. Но опять же, тут - железки и видно результат работы, а там - ну, на сервере мой код крутится, является частью какой-то здоровой системы, хуй знает, будет ли хоть раз за год именно мой код вызван, хуй знает кто пользователь и что ему вообще от системы нужно, потому что на разработку задания давали менеджеры и они все поясняли конкурентным преимуществом или какими-то графиками, дескать вот, фича популярна, давайте у нас будет.
>>2265776 >А тут - хоп, лампочка зеленая замигала, устройство начало сбор данных с других устройств, хоп другая лампочка, уже красная мигает, значит какая-то ошибка, подключаешься, смотришь код, ага - флешка сдохла, ты с приложухи послал сигнала - хоп, устройство релешкой щелкнуло. Это же пишется на всяких МЭК-языках, типа IL, ST, FB, LD, а не на С. Или у вас там и железки самопальные?
>>2265853 Не понимаю что ты под самопальными подразумеваешь. Комплектующие(платы, микроконтроллеры, диоды и т.д.) заказываются из-за бугра(что-то у китайцев, что-то из США, что-то с европы, в зависимости от требований к устройству и цены). Умные дядьки-инженеры это все в зависимости от требований к устройству компонуют на плате, дизайнеры - делают корпуса если надо. Когда тестовые образцы проходят все испытания - начинается производство. Сейчас весь наш код внутри устройств - на си написан. Судя по репкам, когда-то давно пытались на С++ писать, но что-то не срослось.
>>2265865 А, ну да, сейчас еще кококо импортозамещение, государство хочет заставить переходить на НАШИ комплектующие, но судя по умным дядькам-инженерам - наше железо скорее всего не появится, потому что там цены такие, что пиздец, а качество уровня: ну да, работает, но отстает от зарубежного как по характеристикам, так и по качеству, про сервис - говорить не приходится.
>>2265865 >Умные дядьки-инженеры это все в зависимости от требований к устройству компонуют на плате, дизайнеры - делают корпуса если надо. Когда тестовые образцы проходят все испытания - начинается производство. Но ведь на выходе получается слабоподдерживаемое говно жи!? Одно дело ПЛК, который может любой переконфигурировать, а другое дело самопальные платы, с залоченной прошивкой и отсутствием исходников. Нахуя вы это делаете?
>>2265873 > Нахуя вы это делаете? Потому что эти устройства и не должны быть переконфигурированы. Прошивки делаются специально под требования клиента и нормативные акты. Ну и да, я не хотел вдаваться в подробности, но сфера - измерительные приборы. Думаю из этого понятно, что какой-нибудь ЖЭК не хочет, чтобы любой Вася-радиолюбитель и умеющий пользоваться гуглом - залез и сделал себе бесплатную воду, там куча степеней защиты, начиная с поднесения магнита и заканчивая попыткой перепрошивки.
>>2265877 >но сфера - измерительные приборы > А тут - хоп, лампочка зеленая замигала, устройство начало сбор данных с других устройств, хоп другая лампочка, уже красная мигает, значит какая-то ошибка, подключаешься, смотришь код, ага - флешка сдохла, ты с приложухи послал сигнала - хоп, устройство релешкой щелкнуло Чота ты запизделся ужо.
>>2265891 Няша, ты когда последний разу какой-нибудь современный счетчик или УСПД видел? Лампочки для индикации состояний там в наличии. Подключились к серверу по GSM - лампочка горит, на дисплее - циферка 1 - установили TCP-соединение; 2 - зарегистрировались на сервере; 3 - работаем в штатном режиме, шлем данные и т.д. Релешки всяких счетчиков - так же: пришел запрос по какому-нибудь modbus или iec101/104 на контролирующую станцию, она передала уже конкретному устройству - у него переключили реле, в квартире отключили свет/воду за неуплату.
>>2265924 Вот ты рофлиш. А там в некоторых экспериментальных и дорогих образцах - линукс(порезанный, но вполне себе линукс), для веба ПХП, фронт на vue каком-нибудь, уже хотят приложения с сей на более современные языки переносить, проблема в памяти, т.к. если тот же .net или жаву запихнуть, то придется памяти больше покупать -> увеличение стоимости конечного устройства. В обычных массовых счетчиках этого конечно нет. Пока. Но будущее примерно такое: ты будешь иметь возможность прямо с компа посмотреть сколько ты там чего выжрал, оплатить сразу с мобилы или прикрутить автооплату.
>>2265746 >когда ты привык, что за памятью уже следить не нужно, есть GC, который следит за этим Я всегда говорил, что сирешётка разжижает мозг. Программист, которому нужен сборщик мусора, вместо кода пишет мусор. Серьёзно, блядь, ты ведь понимаешь, что GC необходим не для того, чтобы ты, долбоёб, мог не думать, а для того, чтобы следить за временем жизни объектов, попавших в замыкания в языках с лексической областью видимости и функциями высшего порядка?
>>2266479 Таблетки принять не забудь. > In the common language runtime (CLR), the garbage collector (GC) serves as an automatic memory manager. The garbage collector manages the allocation and release of memory for an application. For developers working with managed code, this means that you don't have to write code to perform memory management tasks. Automatic memory management can eliminate common problems, such as forgetting to free an object and causing a memory leak or attempting to access memory for an object that's already been freed.
>>2266674 Что ты понимаешь под пониманием того что ты делаешь? Ну, вот допустим, я пишу хелло ворлд.
#include "stdio.h" int main(){ printf("Hello world!\n"); return 0; }
Я знаю что делает каждая из этих строчек. Знаю ли я что я делаю на самом деле? Допустим я слышал про то что код потом будет скомпилирован и слинкован и представляю себе в голове как это будет работать, что входной файл будет разбит на токены, будет построено синтаксическое дерево, оно будет оптимизировано, а затем модуль будет преобразован в ассемблерный код. Относится ли это к хелловорлду как программе и нужно ли было мне это знать? Я не уверен. Но допустим это шаг к тому, чтобы понимать. Дальше. Вот что делает printf()? Ну, я чисто предполагаю, что оно делает какой-то системный вызов в духе write(STD_OUT, msg, sizeof(msg)-1), который прочитает из регистра данные переданные и передаст их в какой-то стандартный вывод. Но понимаю ли я что я сделал? Ну, может быть я знаю, что у операционной системы есть некие потоки для т.н. выводов, ошибок и прочего. Но действительно ли я это понимаю? Наверное же нужно таки понимать, а как опрерационная система таки вывод этот сделает. Я должен знать, что вот есть устройства, в эти устройства я могу послать сигнал, устройства на выходе дадут какой-то ответ. А действительно ли я понимаю как этот ответ получен. Да и нужно же держать в голове, что есть электрончики, транзисторы, сигналы...
Я эту телегу к чему. К тому что понимать что ты делаешь - это очень расплывчатая вещь, которая еще и не делает тебя ближе к результату - законченная программа, которая что-то полезное делает. Допустим ты решаешь сделать текстовую адвенчуру. Все что тебе тут нужно это базовые if-else и printf, scanf и работа с файликами, если не хочешь текст хардкодить. Каким образом та телега приблизила бы тебя к тому чтобы ты сделал законченную текстовую адвенчуру - я лично не понимаю.
>>2266713 Я имел ввиду не то, как оно работает под капотом, а то когда у тебя лапша из кода и нужно понимать что и к чему ты пишешь. Я не думаю что человек изучающий си месяца 3-4 способен сразу к осознанному написанию сложного по. К примеру взять питон макаку какую-то, там же просто пишутся скрипты которые надо «заучить», я не думаю что в си так получится, написать из коробки что-то осмысленное, да ещё чтобы оно и работало
>>2266747 >>2263515 Для написания хорошего ПО надо научиться архитектуру придумывать. Я уже лет 5 программирую, но начал задумывать над этим только сейчас. Потому что, если мой проект разрастается хотя бы до уровня комплиятора "непростого" языка программирования, то везде начинают слои абстракции друг в друга переливаться, WET образуется сам по себе и исправить его представляет сложности, один и тот же код приходится переписывать по несколько раз.
Если научить человека, изучающего Си 3-4 месяца создавать хорошую архитектуру, то и ПО он сможет нормально и внятно писать.
>>2267124 >Если научить человека, изучающего Си 3-4 месяца создавать хорошую архитектуру, то и ПО он сможет нормально и внятно писать. фантазии. и мало того что "нормально и внятно" никогда заранее не понятно, так он ещё и не поймёт как не надо.
Задание K&R 1.9 Написать программу для копирования входного потока в выходной с заменой каждой строки состоящей из одного или нескольких пробелов - одним пробелом
Мне не нравится мой счетчик count который при вводе миллиарда пробелов даст слабину как бы его убрать....
>>2267676 Няша, ты же понимаешь, что ты шиз? И то что GC впервые начали использовать в лишпе - не значит что > GC необходим не для того, чтобы ты, долбоёб, мог не думать, а для того, чтобы следить за временем жизни объектов, попавших в замыкания в языках с лексической областью видимости и функциями высшего порядка Блядь. Горит. Сука. Давай, объясняй тогда, нахуя нужен был GC в жавах первых версий? Хули он там делал? А нахуя он в бейсике? А хули есть реализации GC даже для сей? Нахуя они там? Сука. Объясняй. Раз уж спизданул хуйню - давай, поясняй нахуя? Жду. Блядь, когда ты продемонстрируешь функции высшего порядка в няшных си(да, блядь, свой GC в си имплементировать никто не мешает) и покажешь мне замыкания в бейсике.
>>2268236 Делаешь обычный флаг. IsSpaceFound. Встречаешь пробел - выставляешь его в true. Когда видишь первый непробельный символ - проверяешь флаг, если там флаг true - вставляешь пробел, сбрасываешь флаг и выставляешь следующий непробельный символ.
>>2268275 > Давай, объясняй тогда, нахуя нужен был GC в жавах первых версий? Чтобы додикам, которые не осилили C++, ручное управление памятью говна в жопу не заливало.
> А хули есть реализации GC даже для сей? Чтобы писать на сях рантаймы языков с ФВП и лексическим скоупингом. Посмотри на список применений того же boehm-gc, там с полдюжины разных лиспов.
> А нахуя он в бейсике? Бля, братан, цитату Дейкстры про обучение студентов бейсиков и умственную неполноценность загугли сам в качестве домашнего задания.
>Блядь. Горит. Сука. Конечно, чтобы осозновать собственную неполноценность без бурных эмоций, нужна серьёзно развитая психика, тебе до такого далеко.
Эх, Луговского на вас, долбоёбов, не хватает, он бы вас сразу нахуй опустил, это я такой добрый, объяснять ещё что-то пытаюсь, нести светлое знамя прогресса в безграмотные народные массы.
>>2268236 Короче, ты странно условие расписал. Я не совсем понимаю. Судя по коду - ты просто копируешь символы, при этом первый пробел - два раза. Если тебе нужно было серию пробелов заменить одним, то: whie(1){ c = getchar(); if(c == ' '){ putchar(c); do{c = getchar(); }while(c == ' ');} if(c == EOF) break; putchar(c); }
>>2268313 Я в упор тогда не понимаю каким образом. Может быть я обдабался. Смотри, ты встретил пробел. Заходишь в условие. Увеличиваешь счетчик. Проверяешь что счетчик равен 1. Засовываешь пробел в выходной поток если счетчик 1. Выходишь из условия. Засовываешь значение из переменной c - в поток, это второй пробел уже. Затем ты обнуляешь счетчик, что значит что ты если снова встретишь пробел - счетчик снова будет равен 1. Я в упор не понимаю, как оно у тебя работать должно. Может быть мне нужно поспать.
>>2245329 (OP) >- Visual Studio Community Edition Достопочтимый сэр, вы ёбу дались? Вы действительно советуете для хэллоувордов устанавливать и настраивать этого стоголового монстра?
>>2245329 (OP) Прохожу вводный курсик на степике так сказатьб. Кто-то может пояснить, что в данном случае не так? У меня всё работает, а на сайте не проходит. я бы и там в комменты отписал, но автор курсика под этим заданием людям лишь год назад отвечал Ну и код на пастебин: https://pastebin.com/rccCL2ER
>>2268456 >Ну и код на пастебин: https://pastebin.com/rccCL2ER Я правда туда забыл main и includы добавить, но тут я думаю и так понятно какие инклюды добавить надо, чтобы работало.
Такой вопрос. Вот есть связной список типа пикрелейтед. Вот если я захочу его очистить мне нужно пройтись и вычистить каждую ноду, или достаточно только сам список в free кинуть?
>>2268510 Да я ноль в сишке. Ну я думал что так-как ноды не хранятся непосредственно в стракте списка то и free не может знать сколько и где памяти освобождать. Ну кроме как рекурсивно пройтись по всем поинтерам. Алсо, не подскажите с какими флагами надо запускать gcc чтобы он хоть как-то ексепшены показывал. А то сейчас он молча все компилирует, и так же молча при запуске вылетает.
>>2268512 1. free знает размер, потому что он записан по тому же указателю, но до. 2. держи мой скрипт (уже устарел наверно) https://pastebin.com/JSgeTbq7
>>2268519 Да, из-за фсанитайзов крашится. Наверное не поддерживает форточки. Ну я >-std=gnu2x -Wpedantic -w -Wfatal-errors -g -Werror -Wduplicated-cond -Wshift-negative-value вписал, вроде начало ругаться когда пытаюсь стековые поинтеры освобождать.
>>2269372 Каво нахуй, благодарю. Ты что магистр что ли? Можешь объяснить, что в моём не так было, я и так и эдак условия переделывал, а у тебя вуаля и всё. ну только вместо %d % PRId64, опечатался ты наверное Ну хотя да, в этом моём if (!a.valid && !b.valid) { return none_int64; } ___return a.valid ? a : b; } можно было придраться, но когда я множество раз менял, обрабатывая все возможные случаи, оно тоже не проходило.
>>2245329 (OP) Хочу спросить о разработки на компилируемых языках.
Вот если с питоном ты можешь легко переписать часть большого проекта и быстро это проверить, то в случае, например, с хромом, придется очень долго ждать пока он скомпилируется.
>>2269516 > Можешь объяснить, что в моём не так было Могу. Строчка > return a.valid ? a : b; Ты проверяешь что а - валидно и возвращаешь в этом случае a. А задача - вернуть минимальное в случае если оба валидны.
>>2269516 А вообще. Потому и придумали TDD. Пиши для себя тестовый код в котором у тебя будет проверка ожидаемого результата и реального. В си есть такая штука как assert.h используешь assert() сравниваешь там ожидаемый результат и реальный, выводишь в stderr значения аргументов и сразу видишь где и с какими данными у тебя проблемы. Потом можешь загнать эти данные и в дебагере по шагам пройтись, если сразу не заметишь ошибку. Как-то так. Да.
>>2269589 >>2269583 Бля, ахахах. Ебать я долбоёб, там же меньшее нужно было возвращать, а не большее. Ахахах. Сука. Опять больше/меньше неправильно стоит, я так же ещё в 2х заданиях тупил, пока не сообразил. Ахахахах. >>2269596 Понял, посмотрю.
>>2270125 Передаётся. Он становится arg0. Почитай, как конвенциально используется arg0 в контексте вызова программ. Пиши execlp(" ls", "ls", "-l", "-a", (char *) NULL);
>>2270523 >треды можно юзать? Я не знаю, это закрытая железка (под капотом какая-нибудь RTOS) и закрытое ПО. Позволено создавать параллельные процессы \ задачи самого примитивного вида.
>>2271398 Нармальна! ООП там для понту больше. Чисто показать как можно наследелование, инкапсуляцию реализовать. И его подход с вынесением в хилеры минимально необходимого интерфейса мне нравится. А так там в основном про многопроцессность/многопоточность в никсах.
Привет! в общем тут такой вопрос, я редактирую в самой программе строку и хочу сохранить её в файл, то есть если я сам её редактирую, то /0 по дефолту не будет добавлен, да? так вот, для того, чтобы правилньо сохранить буффер в файл, мне надо добавлять самому 0 символ, или нет? просто насколько я помню EOF не 0, а вообще отрицательное число, поэтому я вообще не знаю как тут быть, нужен совет
>>2273209 \0 это признак конца сишной строки в памяти(крайне хреновый кстати, из-за которого нельзя \0 использовать в самой строке). В текстовом файле конец строки это \n или \r\n в зависимости от ОС. По крайней мере так разруливают все основные популярные апи дргугих языков, при работе с файлами. Допустим в шарпе, если ты будешь использовать File.ReadLinse("path") - то разделителем этих строк - будет \n или \n\r в зависимости от ОС, а при записи с помощью File.AppendAllLines ("path",strings[]) - в конце каждой строки - добавятся эти символы. EOF - в сях/плюсах - это просто флаг того что файл/поток закончился и никуда его лепить не нужно. Да, во времена доса - там таки был такой символ, но использовалось это как костыль для своих досовских нужд. Чтобы сохранить строку в файл ты должен, внезапно, просто записать все символы в файл, предварительно разрулив кодировку.
>>2274723 Лол, раст особо не помогает. Конечно он позволяет избежать глупых ошибок при работе с памятью, которые можно допустить по невнимательности, но всего того, что написано в твоем посте он не решает. Раст - продукт от корпораций для корпораций, чтобы ускорить время и понизить стоимость разработки продукта, заменив высокооплачиваемых спецов на пару индусов. В общем, системное программирование может ожидать такая же участь как и веб с энтерпрайзом. У раста будет своя определенная ниша, но как УБИЙЦА няшной и плюсов он точно не годится.
>>2274930 >этот дэмэджконтрол Не поверишь, но я прямо сейчас пишу проект на расте и с радостью перешел бы на этот язык будь он готов. А пока что у него даже стандартов нет, весь стандарт - это текущая функциональность компилятора.
>от жирной типовой пасты про вирджина и чэда А когда было иначе? Традиции нужно соблюдать.
>>2274992 >отсутствие стандарта позволяет вносить новые фичи Я вот этого никогда не понимал. Накой хуй новые фичи в системном языке? Зачем там нужны лямбды и прочая ересь, которая стоит дополнительных ресурсов процессора? Почему некоторые не могут понять, что все, ГОТОВО и вечно пытаются что-то прилепить скотчем?
>новые фичи Которые ограничены llvm, который развивается для плюсов, лол. Поэтому у раста по определению не может быть больще функционала чем у плюсов.
>>2274997 >Накой хуй новые фичи в системном языке? Зачем там нужны лямбды и прочая ересь, которая стоит дополнительных ресурсов процессора? Ну тут уже определение "системный" у каждого своё будет.
>Которые ограничены llvm, который развивается для плюсов, лол. Ты ещё учишься, да? Или это троллинг тупостью?
>>2274997 >Зачем там нужны лямбды и прочая ересь, которая стоит дополнительных ресурсов процессора? https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html Сейчас разработчики пинуса и gcc жидко пёрнули со своими вложенными функциями, ренджами в свитчах и ещё полусотней нинужных фич. Ведь можно было всё захуярить на ANSI C и не прибивать яйца к жопаельному компилятору...
>>2275126 >Ты ещё учишься, да? Или это троллинг тупостью? А что не так, лол? Rust - фронтэнд для llvm, который в свою очередь изначально писался и пишется под плюсы. Специально по раст его никто изменять пока что не будет.
>>2275131 >Rust - фронтэнд для llvm Реально учишься походу.
>который в свою очередь изначально писался и пишется под плюсы LLVM — промежуточный таргет с кучей бэкэндов и мидлварей до этих бэкэндов, из которых можно собирать что угодно хоть твою жирную гречневую мать. Он by design "language agnostic". Что там конкретно "пишется под плюсы"?
>Специально по раст его никто изменять пока что не будет. А ты хотел бы лайфтаймы в IR добавить?
>>2275149 >завтра в школу. Ох, если бы это было правдой, то я бы обрадовался. Увы, но я уже зрелый мужик, который должен сам себя содержать и обслуживать. Как же я заебался...
>>2274982 >даже стандартов нет мне вот это главное не понятно - почему они всё время меняют поведение? делали бы уже, за выдержкой лет, раст 2, 3, 4 - как культурные люди делают.
>>2275267 или, вероятно, это попеннет в голову так проник, и там нет нарушений, а только нарост функционала. правда не понимаю раст, даже стыдно иногда становится, что все говорят про него, а я даже синтакстис не знаю.
>>2275382 Ещё один вкатыш не отличает языка от имплементации. Это оксюморон уровня "С — фронтэнд для LLVM". Фронтенд для LLVM — это конкретно rustc, как и clang.
>Пажжи, так для ржавого есть другие бэкэнды, кроме llvm? Есть gccrs, mrustc. Хотя сути не меняет, даже не будь их.
Задание K&R 1.10 Написать программу для копирования входного потока в выходной с заменой знака табуляции на \t, символа возратат строки (бекспейс) на \b , а обратных косых черт на \\
Сап аноны. Есть чисто теоретический вопрос почему если в конце первой строки \n то вывод нормальный те 1 строка за ней 2-я. Но если поставить \t или любой другой управляющий символ то первой выведет jjjjj? Прога вроде бы не должна паралельно исполнятся .
>>2277314 Ну вот на BSD системах используется стандартная реализация, так и называется libc. В линуксе используется уже другая реализация стандартной библиотеки - glibc. Я вот и хочу понять в чем между ними разница.
>>2277319 >Ну вот на BSD системах используется стандартная реализация, так и называется libc https://ru.wikipedia.org/wiki/Стандартная_библиотека_языка_Си >Стандартной библиотекой языка Си (также известная как libc, crt) называется часть стандарта ANSI C Если всё ещё не понял — под libc понимают любую реализацию, соответствующую стандарту. А в BSD просто не стали запариваться с названием для своей.
Анончик, у тебя не бывало такого чувства, что после того, как напишешь что-то сложное и стоящее лично для себя, не сможешь после этого проекта ничего выдавить из себя? ну типа вот бывает кураж такой, начинаешь писать, получается, идеи сами лезут в голову, но после него(куража) не сможешь вообще ничего выдавить, даже банального чего-то. Если у тебя такое было, можешь поделиться че делать в таких ситуациях, или это само с временем пройдёт и не надо загоняться?
>>2279248 >У языка есть интерфейсы для этого, с которыми он знает как работать. Очень абстрактно. На практике как это выглядит? Есть https://github.com/uNetworking/uWebSockets веб-сервер с феноменальными показателями производительности (обходит Nginx как стоячего). Каким то образом его используют https://github.com/uNetworking/uWebSockets.js на Node.js. Как используют не знаю, в доке не описано, а в коде я не смог разобраться. Автор не хочет портировать на другие языки. Вот мне стало интересно, можно ли использовать этот сервер например из PHP.
>>2279241 >как можно использовать его из кода на python или другом языке? В случае интерпретаторов пишутся экстеншены. Это бридж от твоего интерпретатора до нативного кода, который прокидывает вызовы, маппит типы, менеджит память и тд. Короче, делает всю байтоёбскую работу, которой ты не видишь из интерпретатора при написании клиентского кода.
Гуглишь "nodejs/php/python extension c/c++" и читаешь доки. С твоим уровнем бесполезно, начни с байтоёбства попроще.
>>2279258 >Очень абстрактно. Для нативных языков — это все 100% работы, которую для такого надо сделать, ничего абстрактного.
>>2279549 Это относится и к Си. Не даром современные программисты стараются вместо C/C++ использовать другие компилируемые языки. Вот ты знаешь C/C++, а можешь написать такой же https://github.com/uNetworking сетевой стек? Если нет, то выброси свои "знания", они бесполезны. Если ты со своим Си не можешь написать ничего, то не гони на PHP и другие языки. Язык нужен чтобы на нем писать софт, решать задачи. Если задачи не решаются, то язык такой никому не нужен. На Си что то писать нормальное могут единицы. Просто потому, что нужны очень глубокие знания платформы и сопутствующего. Если у тебя таких нет, то твои понты не стоят ни гроша.
Zdraste, начал учить программирование. Полузнакомый-полудруг полупрогер-полупокер посоветовал начать изучение с языка си, сказал что это наиболее оптимальный язык для понимания сути программирования. Посоветовал книги: Дейтел, Пратта, Керниган Ричи Ну вот я начал с самой тонкой и вскоре понял что чот трудно. Ну открыл книги потолще и вроде стало полегче постепенно эти циклы там переменные форматирование и т.п. мелочи. И дохожу я значится то массивов и вот уже прошло времени где-то с месяц, а я до сих пор туплю на массивах на всех этих элементарных вещах вроде заданий с учебников даже на одномерных массивах. Причем когда подгляжу решение т.е. код. И вчитаюсь в него, то все становится вроде понятным, а как только снова надо решить задачу чуть чуть отличающуюся вернее с дополнительным действием, то сразу возникают трудности с реализацией этой задачи. Я что тупой что ль и программирование не мое? А дальше ведь указатели и ещё какие-то функции из стандартных библиотек на полкниги всякие проверки условий гетчары путчары эндоффайлы строки структуры жонглирование и фристайлинг ими....
>>2279642 Сейчас бы слушать кого попало. Если ты на дваче или у знакомого программиста спрашиваешь "какую книгу мне прочитать?" Приготовься, что тебе посоветуют лютую хуйню. Проблема не в самом программировании, а в том, как вы обучаетесь.
Ошибка всех нубов в том, что вы с нуля сразу садись штудировать серьёзные фундаментальные книги. По тысяче страниц и более. Зачем? Это как в тренажёрном зале, придти и сразу начать тягать штангу в 300кг. Чтобы сразу сорвать мышцы и уйти, хлопнув дверью сказать "тренажёрка не для меня!"
Если хочешь нормально обучаться - возьми прямо совсем лёгонькую книгу. Какой-нибудь типа "c++ для чайников". И потихонечку-полегонечку почитывай, страниц по 10 в день. Не нужно себя насиловать и пытаться за один день стать супер-профессионалом. Если не заходит - возьми что-нибудь другое! Программирование должно быть чисто в удовольствие, без всякого напряга.
Нагрузку нужно повышать постепенно. И закреплять всё на практике. Самую базу выучил - пишешь код. Ещё чуть-чуть подучил - ещё написал кода. На гитхабе можно чужой проект найти и поковырять его внутренности. Без реальной работы с кодом ты просто не поймёшь теорию.
>>2279642 >хнык-хнык Щас бы слушать жалобы, что не получается стать программистом за 21 день. За такой срок ты даже верстке нормально не научишься. Скорее всего за этот месяц ты 99% времени читал и только 1% писал код. Вот и делай выводы. У тебя всего несколько часов практики, а чтобы стать профи нужны тысячи часов.
>>2280518 >Пока что выкрутился такой оберткой, но выглядит как-то погано, не думаю, что это экономно по памяти: > >typedef struct { >UINT8 baz[3]; >} bar; >
Выравниваение тут произойдёт и займёт ширину машинного слова. Или 32 бита.
Чтобы отключить выравнивание используй директиву препроцессора
>>2279642 Обычно самоучки чем-то стоящим становятся месяцев через 6. Пригодными для решения реальных задач становятся через год. И лишь через два года они могут создавать большие и надёжные проекты. Разумеется, это усредненные числа, у каждого индивидуально может наступить каждый из моментов раньше или позже в зависимости от выбранных методов обучения, количества свободного времени и сил, способностей и связей с другими.
>>2277714 Обыкновенная физиология. За сильное возбуждение нервной системы неизбежно расплачиваешься утомлением. Если очень интересно, можешь почитать "Гениальность и помешательство" Ломброзо, там этот вопрос часто поднимается.
>>2245329 (OP) Какие есть альтернативы protobuf, пригодные для описания различных закодированных или сериализованных структур данных? Чтобы работать с бинарными протоколами различными. Думаю, реализовать для себя нечто подобное, или изучить готовое, если есть.
Аноны из ембеддеда, системщины и других низкоуровневых отраслей. У вас на работе тоже имеются QA, аналитики, ПМы, менеджеры и прочие социобляди в огромном количестве?
>>2281104 Есть flatbuffers, есть bencode, но проще всего сделать что-то свое. Есть ровно три варианта: срать текстом, срать сырыми структурами (тебе будут говорить, что это плохо, но ты не верь) или срать каким-то подобием TLV (отправляешь tag/type, опционально length и потом value).
Алсо, чем тебе протобуферы не угодили кроме отсутствия официальной поддержки сишки?
>>2281640 >чем не угодил Вот есть уже готовый протокол древний какой-нибудь, описанный в толстом PDF или xls файле. Там по сути структуры, по-разному закодированные строки (то с размером, то null-terminated), числа, enum, массивы и структуры в структурах. Protobuf, как я понял, для такого не годится, так как он для новых протоколов заточен, и там не настолько всё гибко, чтобы поддерживать легаси. Или я ошибаюсь? Возможно, что-то такое реализовано где-то в Wireshark, там есть поддержка огромного числа протоколов, всё разбирается по полям.
Было, в общем, прикольно бы описывать эти структуры общим каким-то способом, и потом на основе этого генерировать сериализаторы/десериализаторы, или интерпретировать формат и обрабатывать данные на лету, как в sprintf/sscanf.
По поводу сырых структур, там ещё бывает нужно с endianness разобраться, если машины разные.
>>2245329 (OP) Хочу познать как пишут клиент-серверные приложения в телекоме. Что и где читать? Какой язык, Си или Эрланг, или оба? Где вообще лучше такие вопросы задавать?
>нравятся длинные названия для функция и переменных >нравится ограничивать длинну строки до 80 символов >не нравится добавлять много белого пространства >не нравится 2 пробела для таба, слишком мало >не нравится 4 пробела для таба, слишком много >3 пробела это ебланизм че делать, выглядит уродливо. как как победить аутизм?
>>2284641 4 пробела выглядит лучше, чем 3 или 2. Потому что когда пишешь "if (", то следующая строка начинается там же, где и условие в if, что выглядит ровно и красиво. Используй 4 пробела.
>>2280778 >I have absolutely no idea how to write a programming language Никто не знал, когда PHP появлялся. Единственная адекватная на эту тему литература, которая была доступна, это книжка с дракончиком. Если тебе нужно создать небольшой язык для работы с формами, тебе не нужно её читать.
>I just kept adding next logical step on the way. И правильно делал, так реальные программисты решают реальные проблемы.
>I'm still bad at writing parsers. Парсинг это ничтожная часть рантайма в любом языке программрования.
>The function hashing mechanism was strlen() Хеш функцию несложно заменить, если нужно. Сокрее всего тебе вообще не нужно будет ничего хешировать на ранней стадии разработки языка программирования. strcmp() линейно ищя нужный айдентифаер в массиве будет работать адекватно.
>I don't care about this crap at all. Всем адекватным людям тоже на это похуй.
База, кароче говоря. У руби например долгое время вообще не было виртуальной машины и язык работал проходясь по сгенерированным парсером АСТшкам.
>>2245329 (OP) Можно как то зарабатывать не устраиваясь никуда и не влезая во фриланс? Просто так писать код не интересно, хочется чтобы это приносило хоть какие то деньги. Можно написать приложение для андроида, но это долгий путь. Нужно сделать хороший интерфейс, нужно продвижение. Писать какие нибудь парсеры? Это нужно искать заказы. Есть способы заработать написав приложение, которое продавать на маркетплейсе или же написав приложение, которое будет как то деньги добывать?
>>2284664 >Потому что когда пишешь "if (", то следующая строка начинается там же, где и условие в if, что выглядит ровно и красиво. Самый тупой аргумент. Почему именно для if? Существуют же еще for и while, почему тогда не 5 или 7 пробелов?
>>2284842 Потому что if встречается в C-коде значительно чаще циклов (из-за обработки ошибок). Ну и это, аргумент не был на 100% серьезным, если ты не понял.
>>2285335 >Хочу похвастаться своим git 100 форков крупных проектов без изменений? >Придётся хуячить статью на Хабре, плюсы в карму зарабатывать. Слишком толсто.
>>2285356 Никак, к тому же зачем? Если в сторонней библиотеке есть enum, значит его значения используются внутри нее, зачем тебе изменять его возможные значения, если они не будут использоваться внутри нее?
>>2285358 Ну, например, эта либа задает базовый функционал, например, в ней есть базовый набор кубиков для конструктора. Но используя ее, нужно расширить этот функционал, а тип этих кубиков задается в enum, а не строковому названию. Поэтому для расширения требуется как-то впихнуть еще значения в enum, но не трогая код самой либы базовой. Вроде в SDL что-то такое было для добавления своих event и они там тоже в своем enum были, но точно не помню
>>2285365 Так принцип-то не тот: базовая либа она и предназначена для только базового функционала, а пользователи расширяют ее под свои задачи. А не знаете в плюсах такое тоже отсутствует?
>>2285359 Мне в какую-либо функцию поступает enum, принимающий значения EVENT_HUY, EVENT_PIZDA, EVENT_JOPA, в моей (внутренней) функции, реализуется функционал для каждого значения, скажем через таблицу строк, функций и т. д.. Чтобы какой-то анон с двача, изменил поведение моей функции, ему надо переписать ее, иначе я бы использовал define для принимаемых констант, если бы добавил (хотел добавить) возможность расширение функционала без вмешательства в исходники. Ты же хочешь просто добавить еще какие-то значения, которые моя функция не ожидает, если я использую таблицу (массив) строк, для каких-либо строковых представлений значений (для отладки, вывода и т. д.), то твое расширение функционала - это потенциальная запись/чтение, в какую-то память, что приведет к ошибкам, уязвимостям в конечном (твоем) продукте. Вывод: переписывай исходники или найди документированный способ добавления нового функционала в нужную тебе библиотеку без изменения исходников. ТУПОЕ РАСШИРЕНИЕ ПЕРЕЧИСЛЕНИЯ НЕ ВЫХОД!
>>2284729 Блядь, похаперебёнок, почему ты всё ещё копротивляешься? У тебя был шанс тихо уйти из треда размазывать своё говно по ляшкам, а теперь тебе придётся ещё рот от мочи полоскать.
>>2285504 Чем ты хвалишься, дура? Язык Си не ты создала. Своим есть чем похвалиться? Код хоть есть какой? Какой же ты ребенок. Только дети хвалятся не своим.
>>2285504 >>2285883 Тупой школьник, только дети хвалятся тем чего не добились. Например, что у них папа ко-ко-ко. Только вот они ничего не сделали для того чтобы их отец чего то достиг. Они получили отца которого получили. У кого то отец успешный, а у других алкоголик. Это не значит, что ребенок успешного отца приложил усилия для чего то. Также как хвалиться национальностью или местом рождения. Тупица, ты не заслужил это, не добился, не выбирал, ты просто получил это как есть.
Ты такой же недоразвитый дегенерат. Восхваляешь себя из за Си, который не ты разработал. Ты просто им пользуешься (очень сомневаюсь, что ты написал что то на нем). Ты мог бы похвалиться написанным кодом, но у тебя его нет. Так что закрой рот, щенок.
>>2285504 >>2285883 Ты тупее осла. PHP это все лишь инструмент. Почему меня должны волновать твои высеры в сторону PHP? Да, я им пользуюсь. Как и многими другими языками. И что с того? Почему мне должны быть стыдно или что ты там имеешь в виду? Дегрод. Это тебе нужно стыдиться, что ты такое чучело недоразвитое. Отброс.
>>2285917 >>2285924 Кокой сердитый пхпешник. Наверно сам столько сделал для величия языка, что не может сидеть сложа руки, когда на анонимном форуме о нём неодобрительно высказываются. Ещё и своего батю-алкоголика приплёл зачем-то.
>>2285355 >100 форков крупных проектов без изменений? Гы. Ни одного форка. Три проекта на сях. Один из них учебное говно для студентов, который неплохо было бы прибить. Второй - консольная игрушка десятилетней давности. А вот третий... тоже на сях и думаю что вскоре он будет популярен. Не потому что проект крутой, а потому что я "запрыгнул на спину" крупной компании, выводящей новый продкукт. Короче говоря - я подсуетился и сделал к этому продукту консольную утилиту.
>>2285935 >о нём неодобрительно высказываются Переобуваешься, червь. Ты начал оскорблять меня, типа потому что я использую PHP. Тупая дура, школьница.
>своего батю-алкоголика приплёл Мой отец не пьёт, дегрод ты пустоголовый. Как будто ты не видел, что я не своем отце писал. Хотя, ты же червь безмозглый, поэтому не удивительно.
>>2285941 >Червя-зумера забыл спросить. >Переобуваешься, червь. >Тупая дура, школьница. >дегрод ты пустоголовый >ты же червь безмозглый Пхпдев пытается в общение.
>>2285947 > в школе Как что-то плохое. Ну ваще-то первую зряплату за программирования я получил в 1993 году. Внезапно это была программа на Си для отдела кадров. Никаких 1С тогда и в помине не было.
>>2285917 Друг, я ничем не хвалился, я просто на пальцах разложил, почему твой любимый язык программирования - говно. По какой причине ты продолжаешь копротивляться, мне неведомо.
>>2286113 >твой любимый язык программирования К твоему сведению, мой любимый язык программирования это Лисп. Если порассуждать, то окажется, что Си по сравнению с Лиспом это как Запорожец по сравнению с Ламборджини. Поэтому не стоит плеваться желчью, сам себя обольешь.
>>2286180 Так а чо ж ты за пыху тогда уже полтреда впрягаешься? Не пора ли притушить свою анальную боль и пойти дописывать свой кластер метапарадигм на твоём действительно любимо языке?
>>2286351 Есть компилируемые лиспы. Есть без GC. Язык это прежде всего мощь абстракций, а не оценка затрат. Ну сэкономишь ты жалкие 500 Мб оперативки, ну сэкономишь немного процессора. Это железо можно купить за 300-500 рублей в месяц. Зато ты потратишь в 5-10 раз больше времени на разработку. А еще 100% у тебя будет очень много багов, которые потом еще долго нужно будет фиксить. Вот поэтому Лисп это Ламбо, а Си это Запорожец. Да, Запорожец экономней, но на нем ты быстро не доедешь до цели, также и на Си ты быстро не напишешь проект.
Процитирую резюме Льва Валкина: Десятки тысяч строк C для TCP и HTTP акселератора на FSM. Больше так не буду.
Если что, то это топовый программист, давно живущий в силиконовой долине. Он си-хакер. Вот один из его проектов https://github.com/satori-com/tcpkali
Он писал в продакшн на разных языках, в том числе на экзотичесих вроде Эрланга и Окамла. И что же мы видим, он пишет, что написать 10к строк кода на Си это ужас, что больше так делать он не хочет. Поэтому те кто понимают что к чему, выбирают Окамл, Раст, что угодно, но только не Си.
Вывод очевиден. Ты школьник, ничего не смыслящий в программировании, в Си, в лиспах.
>>2286453 >Так а чо ж ты за пыху тогда уже полтреда впрягаешься? Во первых, где? Во вторых, а что не могу? Или ты тут за Си не впрягаешься? Ну тогда и PHP тебя не должен беспокоить.
>Unix, Internet, C. И ??? А, ты наверное хочешь выкрутиться и сказать, что Валкин не писал ни на каком Окамле и т.п.? Загугли, инфы про него много. Здесь есть все ключевые слова, и Lisp тоже https://www.slideshare.net/j2a/ss-4625844
>Во вторых, а что не могу? Ради б-га, у нас пока свободная страна.
> Или ты тут за Си не впрягаешься? Нет, я делаю жирнейшие набросы на похапе, а ты уже вторую неделю генерируешь своим горящим пердаком килобайты копипасты. Я так не веселился со времён форса митрополита токийского.
>>2286685 Ваши лиспы тупо обосрутся на перекладывании байтиков между сетевухами 40g. Ну а если выполнятся код должен на нескольких серваках, это не 500р в месяц.
>>2287191 >Ваши лиспы Лиспы не наши. И Си не твой.
>>2287191 >обосрутся на перекладывании байтиков между сетевухами 40g lol, придумал кейс, который в РФ не существует. В таком случае могу напомнить, что когда в коде для американского спутника нашли баги, а он уже был в космосе, то смогли пофиксить благодаря REPLу. Код был на Лиспе. Кейс тоже редкий, но меткий.
>Ну а если выполнятся код должен на нескольких серваках, это не 500р в месяц. Чиво? Как раз таки Си из коробки не годится для параллельных и распределенных вычислений.
>>2287537 >Как раз таки Си из коробки не годится для параллельных и распределенных вычислений. Чиво так? Вообще-то на Си можно написать абсолюно всё. Только при этом труда придётся положить не мало.
>>2287537 >Чиво? Как раз таки Си из коробки не годится для параллельных и распределенных вычислений. Тебе ли, пхп-макакену, об этом пиздеть? Берёшь и запускаешь тыщу инстансов синглтред говна, раз макака и не могёшь в программирование — и всё равно выходит по железу в 500 раз дешевле, кекс.
>>2286685 >Вот поэтому Лисп это Ламбо, а Си это Запорожец. В твоей воспалённой пхп голове?
>Поэтому те кто понимают что к чему, выбирают Окамл, Раст, что угодно, но только не Си. Ладно ещё раст, но окамл... У тебя вообще всё ок? Или ты ещё учишься?
Лень всем отвечать. Хотя, скорее всего это единственный школьник пишет. Отвечу только на один вброс. Окамл? Да, Окамл. Покажи сколько языков за последние 10 лет написано на Си и сравни с языками написанными на Окамле. Раз ты этого не знаешь, и вообще не понимаешь почему пишут на Окамле, почему Си плохой язык, то не вижу смысла тратить свое время чтобы все объяснять. Про параллельность и распределенность на Си это вообще смех. В Эрланге все есть из коробки. В Си же надо написать тысячи строк кода.
>>2288118 Ну там C89/C99/C11/C17.. В вики написано, что C17 поддерживается шлангом от 7 версии, на android сейчас по дефолту все шлангом обычно, получается, что вроде все должны...
>>2288292 В первом случае, у тебя используется подстановка на этапе препроцессора, а во втором на этапе компиляции. В зависимости от компилятора\его параметров, у тебя может быть, или вызов func_1()->func_2(), или сразу подставиться func_2() вместо func_1(), но в первом гарантировано будет сразу вызвана func_2(). Насколько я помню, некоторые компиляторы могут игнорировать inline, с флагами точно.
>>2288084 >Покажи сколько языков за последние 10 лет Реально либо тупой либо ещё учишься. Язык написанный на языке, проиграно с подливой.
>написано на Си Примерно у всех, где есть рантайм (и он толще стдлиба) или интерпритируемые/с виртуалкой — всё на си/плюсах. Python, Ruby, твой ссаный PHP, JVM, JS, тысячи их. Ты же сам припёрся сюда с вопросом >>2279258 как прикрутить сишную либу интепритатору пыхи, который на си, кек.
>языками написанными на Окамле Компилятор раста (и то только первая версия), хакса и самого окамла? Это по твоему такой дикий вин?
>Раз ты этого не знаешь, и вообще не понимаешь почему пишут на Окамле А что пишут-то? Полтора компилятора для бутстрапа написали за 20 лет?
>почему Си плохой язык Для задач уровня пхп-макакенга? Наверно хуёвый. В нише си альтернатив нет. Раст — альтернатива плюсам, и то не везде. Поясни уж, почему он такой плохой.
>Про параллельность и распределенность на Си это вообще смех. В Эрланге все есть из коробки. Пхп-воен, ты же даже не понимаешь о чём вообще пишешь. Нахуя ты продолжаешь себя закапывать? Просто съеби и смой урину с ебала.
>>2288406 > Раст — альтернатива плюсам, и то не везде. Они же вроде наоборот как си альтернативу показывают, что вот можно отключить стандартную либу раста и пользоваться только стандартной от си для эмбэда? мимо другой анон
>>2288406 Школьник, на Си никто уже давно языки не пишет. Потому что дерьма наелись. Такие неучи как ты может быть. Так что не гони, что Окамле ничего не пишут. Много чего пишут. Даже веб-приложения, что для Си недостижимо. И сколько бы ты не пытался принизить PHP, от этого ты лучше не становишься. Наоборот, показываешь свою никчемность. Ты же даже такой язык не написал. Вообще сомнения в твоих способностях. Не может человек с таким мышлением быть программистом. Максимум копипастером.
>>2288417 Да такой хуйнёй в целом на любом компилируемом языке можно заниматься хоть на том же окамле, было бы желание. Другое дело, что это будет банально больно делать.
Просто когда у тебя задача именно контролировать буквально каждый пук — что на плюсах, что тем более на расте это делать не так удобно, как на си. А смысла писать на расте там, где придётся обойти все проверки компилятора, мягко говоря, нет нихуя.
Из альтернатив именно си я видел только zig, но он в такой стадии развития, что даже для написания петов надо подождать ещё года полтора-два.
Не понял о чем ты. Насчет веба на Окамле, имел ввиду Ocsigen. Он дает фулстек тулзы для написания веб-приложений. И бекенд и фронтент можно писать на Окамле. Крутая вещь.
>>2288422 Спок, скрипткидди, их и на окамле не пишут. Точнее на нём вообще почти нихуя не пишут. Что рантайм окамла, что виртуалка эрланга — всё на сях. Было и будет.
Так что можешь расслабить своё зумерское очко, и идти играть в фортнайт. Написанный на плюсах.
>>2245329 (OP) Что там насчет языка V? Узнал о нем когда он занял первое место в одном из тестов Techempower. Он собственно и сейчас на первом месте в тестах plaintext.
>>2288461 >Не понял о чем ты. Насчет веба на Окамле, имел ввиду Ocsigen. Он дает фулстек тулзы для написания веб-приложений. И бекенд и фронтент можно писать на Окамле. Крутая вещь. Чел походу думает, что ему тут доказывают что си — лучший язык для вротенда и пхп-крудов. Вот вы издеваетесь — а ему ведь реально сложно...
>>2288507 Посмотри исходники. Наверно минимизирует количество проходов, задрачивается чтобы ничего динамически не аллоцировать.
Да и синтаксис у языка простой + нет препроцессора и вообще макросов. Тот же D тоже очень быстро собирался, при том, что там заёбистость синтаксиса не сильно ниже плюсов.
Самое грустное, что асм приятнее. Хуже синтаксис, чем у ссы, трудно вообразить, а так тот же асм. В асм добавь все эти printf в удобном виде, будет та же сишечка без скобок.
Есть руководство как написать свой компилятор. Написано, что для новичков, а некоторые пояснения пропущены. В начале 3 раздела как начинается код, сразу становится ничего не понятно. Написали функцию возвращающую 42, скомпилировали, работает. Дальше ничего непонятно. Потом пишут функцию main, в отдельный файл или нет, не сказано. Я сунул в этот же файл, сработало. Дальше совсем ничего непонятно. Код на языке scheme приводят, а куда его писать не объясняют. Помогите понять что к чему. http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf
>>2290416 У меня глаза от пика утекли. Мне интересно, челы делающие такие скрины реально долбоёбы и так юзают терминал, или просто держат специальный профиль для скринов для борд?
>>2290497 Чел... Это не руководство, это какой-то high level обзор работ, лол. В написании компиляторов в 2к22 есть 2 стула: 1) Короткий (если уж тебя интересует статейный зумерский формат) — по тутору LLVM (покрыта только тема генерации IR, до нормального ассемблера дело там не доходит); 2) Долгий — гуглишь "compiler dragon book" и задрачиваешь. Если надо изучить на уровне "лаба25" и нет интереса глубоко закапываться — у Вирта была какая-то короткая книжка, но то ли поцкали то ли оберон семейство которых ты скорее всего не застал.
>>2290855 Какой-то араб из американских ебеней, написавший курсовую типа: швой лишп в 100 строк пейпер в 2006 точно не мог ошибаться. Особенно учитывая что он там про это вообще ничего не пишет.
>>2290865 >Какой-то араб из американских ебеней Он профессор вообще то и действующий программист. Если не знаешь ничего, то не лезь со своим никому не нужным мнением. По его принципу многие писали компиляторы. Метод раскрутки придуман конечно не им, но больше инфы с кодом по раскрутке в интернете найти трудно.
>>2290990 >нюфаг не понимает даже куда код сувать >РЯЯЯ ВЫ НИ ПАНИМАИТИ И ВААБЩЕ НИПРАВЫ ВСЕ ЭТА НИНУЖНА ВОТ РАСКРУТКА СМАТРИТИ РАСКРУЧИВАЕШЬ КАСЯК И ВОТ КОМПИЛЕР РЯЯ Хорошо, ты выиграл.
>>2290990 Зачем ты вообще лезешь что-то писать, если не хочешь учить теорию и дрочить базу? Чтобы сделать действительно годную вещь, один хуй придется учить много материала и возможно, что не один год. Ты, видимо, просто поиграться хочешь и палочкой потыкать, чтобы потом говорить "А я в ко-ко-компиляторах разбираюсь. Вот даже свой написал". мимо
>>2291162 >А что нельзя? Еще бы у вас разрешения спрашивать. Конечно можно, просто не стоит копротивляться, когда тебе теоретическую базу хотят посоветовать. Так и сказал бы, что просто хочешь палкой потыкать и кирпич в виде книги дракона - это оверкилл для твоих целей, тогда пропала бы и почва для бесполезного срача.
>>2291162 >А что нельзя? Еще бы у вас разрешения спрашивать. Можно конечно. Но книжку хотя бы про си придётся прочитать, код по файлам сам себя не разложит. Ну или поищи статеек с "раскруткой" си, если не воспринимаешь инфу вне привычного тебе тиктокерского формата, кек.
>>2291176 >>2291191 Я не против фундаментальных знаний, но есть несколько НО. Вы сами много в этом разбираетесь, что раздаете советы? Книга дракона может и хорошо объясняет как устроены и как строить компиляторы, но она плохо учит это делать на практике. Вот я выяснил, что для понимания как писать компилятор нужно изучать формальные языки, грамматики и методы трансляции. Это такая дисциплина, ей в ВУЗах учат. По ней книги есть. В книге Дракона сомневаюсь, что об этом написано. А потому она плохо годится как в качестве учебника.
>>2291311 >Книга дракона может и хорошо объясняет как устроены и как строить компиляторы, но она плохо учит это делать на практике. Откуда ты знаешь, если не читал? Вообще советую хотя бы скачать книгу и ознакомиться с содержанием.
И вообще в Rust оверхед можно найти только в динамической диспетчеризации. Про всякие Боксы и примитивы синхронизации (Arc, RwLock) говорить не буду, они самоочевидны поскольку неизбежны в любой современной программе. Бокс это когда у тебя память в хипе (аллокация против стека) а на руках ссылка на нее.
Есть еще многие приятности вроде https://rust.godbolt.org/z/G3a9GY73r когда в структуре присутствует ссылка (а компилятор гарантирует что она не может быть null благодаря правилам языка), получаются такие оптимизации в байтиках. Работает также на Result, а эти типы повсюду в кодовой базе.
>>2291349 >>2291356 Ну да, статически подставленные функции дают меньше оверхеда чем виртуальные методы. И на цпп тоже, и на других компилируемых языках. Сказать-то что хотел?
>>2274997 >лямбды Без них ты не сможешь писать лаконичный код. Если функция в языке не является first-class citizen, то это не язык, а обрубок. Хорошо в Си есть указатели и можно передавать указатель в функцию, это его немного спасает.
>Я вот этого никогда не понимал Отсутствие некоторых фич делает язык чемоданом без ручки. Нести его становится тяжело (код писать тяжело, много кода требуется). Возьмем к примеру Лисп. В нем почти нет синтаксиса, но благодаря некоторым фичам, его небольшой синстаксис становится убойно выразительным. Лисп считается самым выразительным языком. Особенно хорошо эти свойства проявляются при парсинге сложных данных. Попробуй на Си парсить сложные протоколы. Это очень тяжелый ручной труд. Кода писать нужно тонны. Для Лиспа никаких сложностей нет и кода не нужно много.
>>2274997 >Которые ограничены llvm, который развивается для плюсов, лол. Поэтому у раста по определению не может быть больще функционала чем у плюсов. Чиво? Раст написан на Расте. Почему в C/C++ тредах все такие напыщенные, но необразованные? Не ты ли писал в мой адрес, что я пхп-макака? Ох, лол.
>>2291360 >> fn -> fn -> fn -> >Проорал Ну и глупенький. Слышал про кодировки Чёрча? Вряд ли. Сишники и плюсовики народ дубовый. Таким образом реализуют комбинаторы. Которые используют много где.
>>2291386 >Лисп считается самым выразительным языком. Это его также самая знаменитая проблема. Каждый lisp-программист норовит написать свою DSL в которой другие программисты копаться отказываются. (Так я слышал несколько раз)
>>2291485 Скучный аргумент, ни разу такого на их житхабе не видел. Или в статьях о Rust, или на reddit/r/rust или еще где кроме двача и оппеннета с лором. Это всего лишь инструмент, не обязательно ориентацию менять.
Единственный раз когда происходило что-то странное, это когда мозилла в своем блоге за СЖВ начала топить. Но им тогда много от самих растаманов прилетело, которые не желали чтобы от их имени говорили политики. Мозилла больше в Rust не сольная скрипка.
>>2291460 >Это его также самая знаменитая проблема. Я знаю. Но это ведь проблема программистов, а не языка. Нужно просто правильно использовать эту мощь. Никто же не говорит, что не нужно использовать огонь, потому что им можно обжечься.
>>2291589 >Нужно просто правильно использовать эту мощь. Прикол в том, что если что-то есть языке — оно будет юзаться, даже если это какой-то баг говна. Алсо, под таким предлогом можно сказать что раст не нужен — просто никто не умеет юзать си.
>>2291615 >Прикол в том, что если что-то есть языке — оно будет юзаться, даже если это какой-то баг говна. >Алсо, под таким предлогом можно сказать что раст не нужен — просто никто не умеет юзать си. Это ты уже всё перевернул вверх дном. Логическое противоречие и чистейшая манипуляция. Я сказал Си слабый, а Лисп сильный. Ты сказал, что сила Лиспа приводит к тому, что программисты не могут работать вместе, так как каждый использует эту силу в одного, пишет свое решение и все. Получается много разных решений и ни одного общего.
Это же проблема не из за языка, а из за того, что программисты не хотят объединяться, работать вместе, договариваться. Ведь для создания общего проекта нужно объединиться. Но лисперы не хотят. У них есть мощный инструмент, которым они и в одиночку все решают.
Ты в свою очередь, довел все до абсурда. Сказал, что раз мощью Лиспа не могут пользоваться сообща, то она не нужна. Это как сказать, что раз пробки, то машины не нужны вообще. Пробки то не везде. Кто-то живет за городом. В каких то городах дороги хорошо спроектированы и поэтому пробок нет.
>>2291642 >ко-ко-ко, в системном языке не нужон этот ваш Computer Science. Ух, как нипичот!
Зачем раст называют системным, если он больше конкурирует с плюсами, а не с няшной? Что плюсы, что раст не очень годятся для целей где используется Си. Я как-то хотел прикрутить раст к своему проекту, но произошла ситуация как с плюсами, пришлось выкинуть бОльшую часть языка вместе с проверками и получить огрызок, который не очень-то годен. Какого хуя тогда форсят его системность?
>>2291589 > Я знаю. Но это ведь проблема программистов, а не языка. Нужно просто правильно использовать эту мощь. Никто же не говорит, что не нужно использовать огонь, потому что им можно обжечься. когда у тебя есть миллиард способов сделать что-то одно - то программирование превращается в творчество. Просто со всеми ты не договоришься что надо делать так-то. У каждого свое видение, а еще много кто упрямый как осел. у меня бля на работе я руби макака если че обколются своими ооп и рубишными "фишечками", такую лютую хуиту понаписывают, на код ревью устал уже спорить с ними, просто апрувлю если работает и тесты не ломает и линтер не ругается. Уже давно понял что дслы, фичи языка - яд и нахуй не надо. чувствую что надо вкатиться в голанг, и менять работу, то нервы не выдержат
>>2291840 >Зачем раст называют системным, если он больше конкурирует с плюсами, а не с няшной? Что плюсы, что раст не очень годятся для целей где используется Си. Чё? Наркоман?
>>2292138 Он просто не понимает что лоулевел там будет такой же как в "няшной", но писать его придется просто потому что он лоулевел и байтоебство. С другой стороны забывает про возможности типов Rust при нулевом оверхеде. Именно в embedded они могут просиять если понимать что делаешь. Вот так можно сделать проверяемый на стадии компиляции ввод-вывод через порты/память https://opensource.com/article/20/1/c-vs-rust-abstractions комбинируя это с проверяемыми на стадии компиляции стейт-машинами http://cliffle.com/blog/rust-typestate/ (и аффинными типами. Первый пример из той статьи, с закрывающимся файлом) можно смело писать банкомат. Без смс и регистрации.
>>2292116 >программирование превращается в творчество. А потом когда в наследство остается такое "творчество" так и хочется посылать лучи "благодарности" творцу.
>>2292116 >Уже давно понял что дслы, фичи языка - яд и нахуй не надо Ты просто не умеешь их готовить.
>чувствую что надо вкатиться в голанг Ага, вот бы не нужно было, когда срать хочешь, вставать с дивана и идти в туалет, вот бы можно было в штаны себе насерить и сидеть двачевать капчу дальше. Так просто, и никакого тебе места для творчества.
>>2292327 Хуйпойму о чём вы тут спорите. Например, у меня есть три стиля написания - 1) максимально понятно для студентов, 2) просто по канонам, 3) максимально оптимально, десятки приёмов хакерских, но уже через неделю с трудом понимаешь как оно работает.
Стиль выбираю от задачи. И иногда от настроения. Только не верещите тут, мол, надо студентов сразу учить писать по канонам. В реальной жизни это недостижимо. Они (большинство из них) просто не научатся программировать в таком случае.
>>2292415 Нафиг студентов, туда хакерские приемы и следом творчество. Код, в первую очередь, пишется для других людей. А уж потом оптимизация (через выбор более подходящих алгоритмов, организации единиц и уж потом хакерских приемов).
>>2292342 >Ты просто не умеешь их готовить. Я когда хочу срать - действую по простому алгоритму, пришел в толчок, снял штаны, сел на унитаз, посрал, жопу подтерел, смыл, ершиком толчок шлифанул, освежаком попшикал. а кто-то кто занимается не программированием а творчеством: 1) срать подъезжает на гироскутере со смузи, 2) тащит с собой биде 3) по наставлению Малышевой несет с собой табуретку. 4) идет в толчок, ложится на пол, делает бочку и срет себе на лицо. 5) комбинирует 1-4 пункты в различных вариациях в зависимости >>2292415 >от задачи. И иногда от настроения.
И все считают что их подход лучший и все умеют правильно "приготовить" посрать. Где истина? Истинна - конечно же срать так как ты срешь кто бы мог подумать.
>>2292449 >по наставлению Малышевой несет с собой табуретку. Не знал что беру с собой табуретку по наставлению Малышевой. Всегда думал что беру с собой табуретку, чтобы ноутбук удобно стоял. Не держать же его в руках, сидя на унитазе.
>>2245453 Омегалул так марсоход на Си то гайсы,а еще Си будет жить пока будут существовать операционные системы(конкретнее ядро),так как ядро является нечто монолитным,а тут ООп то сосет:) мб не прав если что подправьте в качестве примера могу представить linux ось которую юзают везде практически кроме как десктоп конечно
>>2247084 Я не чекал >>2279664 Да пиздец жиза все четко рассказал мне тоже советовали сразу лютые пиздецки сложные залупы,и я старался но забил хуй а потом спустя месяц вкатился но по своей методике без книг нахуй как уебан скачал sololearn + видео дударя(ну тупо стартерпак для нуба) таким образом выучив питон с django/flask пофрилансил за копейки ботов для тг создавал А ПОТОМ УЖЕ по собственному желанию перешел на линукс начал изучать Си ядро линукс и алгоритмы со структурой данных и поперло ну кароче kernel hacking