Хочу понять win32API и linuxAPI, системное программирование, графика и дэмо😊. И везде нужен Си, я пожалел что начал с джава хоть по ней и больше литературы и материала. Понял что мне нужен Си для информационной безопасности и взаимодействия с ОС.
Мдя, все капаешь и капаешь этим Си, что рано или поздно пойду вспоминать :) не, ну в общих чертах я то помню, и что такое указатели и как их готовить, и что такое выделение памяти, и форлупы и прочие котнрол флоу, просто как-то не понадобилось в работе именно Си. Но, для общего развития - надо. Когда то умел. Даже был случай, не с Си правда, а с ассемблером 8086, должны были ставить автомат на экзамене(т.е. я вообще не готовился)... а в последний момент декан начал ходить с проверкой и сказали что автоматы только в армии будут давать. И вот там надо было на бумаге, на ассемблере написать определенные алгоритмы, в зависимости от вариантов конечно. И это не то чем мы занимались на курсе, т.е. мы писали конечно на ассемблере на лабах - но за компом, с эмулятором, можно было дебажить, смотреть в каких регистрах что происходит... а тут на бумаге. ИЧСХ я написал, все правильно. А сейчас помню только названия пары инструкций, но не помню с какими регистрами они работают. Но в общих чертах помню.
Ассемблер - еще проще! Там вообще все элементарно. Логика автора завораживает и поражает! Аналогию проведу с долото. Все элементарно приложил и стукнул. Только кто-то шедевр сделает, а кто-то и дырку в двери под замок не сможет. И дело здесь не в рукожопости, а в знании предметной области. Для си это компьютер сайнс!
для программирования достаточно самого простого компа, и все зависит от уровня программ которые разрабатывать, но для обучения самого дешевого хватит, а так берите с большей оперативой
Это вряд ли, потому что вряд ли такие проекты в исполнении данного персонажа существуют вообще. Этот чел - мастер разговорного жанра, пытающийся втюхать свою ментальную кашу в неокрепшие умы начинающих.
На самом деле сложность Си преувеличивают профессиАналы, для которых язык нужен, чтобы сайтик по-быстрому накатать. Но программирование это не в первую и не в десятую очередь веб.
Начал изучать язык си по книге Ритчи Сложно конечно, понимаю что основы нужно знать информатики, которые преподают в школе. В школьные времена не было это интересно, поэтому не учил. Сейчас изучаю как работает оперативная память, байты, целые числа, разрядные числа….. Для меня сложно очень Я хочу изучить, но мне страшно Код понимаю, каждую строку вижу что она делает, но руки сами программу написать не могут. Друг меня обучает, он 20 лет в программировании. Помогает мне. Очень страшно, бывает психую и думаю что это не мое… Начал проходить с gpt 4, который мне объясняет все более проще, чем в книге написано. Посмотрим что получится 😢 Друг говорит язык си это основа всех языков, с помощью которого ты выучишь любой другой язык быстро и будешь понимать как все работает.
Не думаю что стоит начинать с этой книги,сам Александр другие книги советует,есть книги для новичков, а есть книги для профессионалов от профессионалов,мне кажется та книга Кернигана Ритчи не для новичков(сам я ее не читал,да и изучаю я с++)книга которую Александр советует называется вроде “программирование на с для начинающих” авторов Грег Перри и Дин Миллер третье издание(но там много ошибок особенно в коде около ста если не ошибаюсь) Александр сделал документ с ошибками и исправлениями мб у него попросишь
В школе на QBasic писал и кайфовал) В университете Delphi, мне кажется самый лучший язык в плане структурированности кода. Но...могу ошибаться, я любитель.
Если знаешь школьную информатику... Не знаю, как в физ-мат-информат лицеях, но в обычных школах информатику очень плохо преподают, поэтому для обычного новичка ЯП Си будет, как минимум непрост в изучении, а в общем случае сложен.
Язык си не сложный. Говорю как музыкант. Но вопрос в том, что если я не хочу писать драйвера и ос, а хочу писать игру например или интернет приложение?
То ты берешь готовую библиотеку-фреймворк и идешь, и делаешь свою игру, интернет приложение, хотя с интернет приложением немного тяжелее, так как зависит от использования js
Они не потянут банально, без хорошего наставника который им будет разжевывать многие моменты в плюсах и большинство просто сольется от обилия информации в плюсах наработанных годами и вложенными в стандарт плюсов, я сам дочитываю сейчас книгу по плюсам Прата и могу сказать в плюсы новичкам не нужно влезать, они просто запутаются, им начинать как раз надо с чего то типа С и потихоньку набравшись опыта, если они хотят перекатиться в плюсы дополнять знания, если банально даже вакансии глянуть на hh то там минимум требования от 3 лет чтобы человек занимался программированием на плюсах? почему, да потому что даже за год человека с нуля до нормального знания плюсов можно сказать невозможно подготовить, поэтому компании вынуждены по плюсам даже брать стажеров, но со стажем не ниже года и жесткой проверкой знаний в плюсах.
Представим допустим завод по производству оборудования для тренажёрных залов, к ним поступил робот задача которого вырезать блины для штанги, гриф, делать насечки на грифе и т. д. Наша задача запрограмировать самого робота и некий интерфейс для оператора. Сейчас для этого используется разные языки и с++ и pyton, и matlab. Можно ли для промышленной робототехники использовать c или это язык чисто для ЭВМ?
кое чего в нём не хватает, например тернарного goto (ну или аналогичного if(), невозможность получить размеры базовых типов во время предроцессинга (#if sizeof(int) == 4 .....)всё остальное есть
просто оставьте си для микроконтроллеров и драйверов профессоналам, для десктопа если хочется страдать берите плюсы, если нет, то питон, жаву, шарп или раст, для тех, кто в курсе
Ой, а как просто будет объяснить начинающему про разыменование указателя по адресу из масива, который передан по ссылке, которая дропнулась при выходе из области видимости чего-нибудь, вызванного откуда-то. Удачи. Upd. О, я понял позицию автора. Язык Си в самом деле сложен, но если ты не хочешь с ним разбираться, то это не проблема языка, это ты такой тупой, что не хочешь полной ложкой черпать из этого древнего отстойника кошмаров! :))
@@kosiak10851 вы не можете представить степень душевной муки, терзающей меня от осознания моей неправоты. Я практически растоптан и размозжён обрушившимся на меня грузом стыда.
Ага, тоже в качестве первой брал его. Хватило меня где-то главы до 6-7й. Вот есть талант у человека, усложнять простые вещи :)) В итоге, по совету Александра, сначала прочитал "Грег Перри, Дин Миллер "Программирование на C для начинающих"". Гораздо лучше зашла. После неё можно и С.Прата, я думаю. Или Р.Лафоре.
Си не сложный , Си весьма кривой и за широких возможностей может приучить к говнокоду. На нем такие ребусы можно понаписать ,что с первого взгляда ,да и со второго не поймешь ,что код делает ,а потом еще и ошибки сплывут .
в английском есть несколько прилагательных "сложный" из них хочу отметить два: difficult и complex. complex это сложный в смысле большой запутанный словно гигантская машина экскаватор difficult это трудный, с которым сложно работать словно задача вырыть канал лопатой. Так вот те кто говорят Си не сложный имеют в виду not complex. А кто говорит сложный, хотят сказать difficult.
Ну если он простой, то на нем просто мутить паралеллельные вычисления, как на скриптовых, видимо, а также жсончики обрабатывать и прочие высокоуровневые штуки))) Может, синтаксически он и простой, но разработать хотя бы мвп не в виде ебдеддед или кли уже требудет очень хорошей квалификации или затратить кучу времени на то, что бы было сделано реально простым языком раз в 10 быстрее
Эм, вообще-то большинство скриптовых языков не умеют в параллельность. Ну и вы путаете понятия простоты и выразительности. У си достаточно плохо устроена работа со строками и массивами, нет удобных дженериков, наличие UB. После решения эти проблем, кодить можно будет не хуже, чем на go, а может и лучше. Даже не нужен никакой сборщик мусора или ООП. Хороший тулинг и пакетный менеджер сможет упростить доступ к библиотекам и фреймворкам. И это все что нужно
@@vas_._sfer6157 "Эм, вообще-то большинство скриптовых языков не умеют в параллельность." Умеют. Даже вурдалака типа питона можно распараллелить, хоть и костыльно. "Ну и вы путаете понятия простоты и выразительности." Зависит от определения "После решения эти проблем, кодить можно будет не хуже, чем на go". Даже на брейнфаке можно кодить не хуже, чем на го. "Даже не нужен никакой сборщик мусора или ООП." Если весьма привычно заниматься управлением памятью, в отличие от скриптовых или того же го "Хороший тулинг и пакетный менеджер сможет упростить доступ к библиотекам и фреймворкам. И это все что нужно" Никакой тулинг, фреймворки и прочее не приблизят тебя к скорости написания кода, как это происходит на скриптовых языках, если у тебя нет феноменальной квалификации
@@shalidor1619 Js не имеет многопоточности, не считая веб воркеры. Python имеет GiL, то есть потоки имеет, а параллельность - нет. Хорошо - под простотой я имею в виду низкую комплексность, когда общая система языка состоит из не большого, но достаточного кол-ва элементов имеющих простые свойства и понятные или даже очевидные взаимосвязи друг с другом. Скриптовые языки, например PHP, Js, Python - весьма не простые языки имеющие неочевидные закономерности. Под выразительностью я понимаю меру, насколько меньше затрат при создании, редактировании или использовании кода или даже наличие самой возможности, создание определенных семантически сложных, но осмысленных кодовых конструкций, которые бы сохраняли читаемость и не были бы хрупкими по отношениям к пользователям кода. Управление памятью не большая беда. Как минимум RefCell контейнеры для Си при наличии дженериков не были бы большой проблемой. Да и по опыту работы с Rust, RefCell достаточно редко нужен. Чаще всего объекты живут не долго, а если живут долго то, в контексте некоторой структуры данных, которая сама будет управлять памятью или это память, которая будет жить до конца жизни приложения. "Простота" в работе скриптовых языков это лишь следствие немного большей выразительности, что позволяет создавать более удобные библиотеки и фреймворки, а также удобный тулинг для взаимодействия с этими библиотеками.
@@vas_._sfer6157 "Js не имеет многопоточности, не считая веб воркеры." working_threads "Python имеет GiL, то есть потоки имеет, а параллельность - нет." Это никак не противоречит сказанному мною о питоне. Обычно его каждый скрипт запускают отдельными процессами в случае необходимости распараллеливания. "Хорошо - под простотой я имею в виду низкую комплексность, когда общая система языка состоит из не большого, но достаточного кол-ва элементов имеющих простые свойства и понятные или даже очевидные взаимосвязи друг с другом." То есть брейнфак самый простой язык. Найс. Только вот подобная простота, и простота использования, к которой я апеллировал, не являются одним и тем же понятием "Скриптовые языки, например PHP, Js, Python - весьма не простые языки имеющие неочевидные закономерности." Естественно, судя по вашему определению простоты языка, машинные коды или брейнфак -- эталон простоты. "Под выразительностью я понимаю меру, насколько меньше затрат при создании, редактировании или использовании кода или даже наличие самой возможности, создание определенных семантически сложных, но осмысленных кодовых конструкций, которые бы сохраняли читаемость и не были бы хрупкими по отношениям к пользователям кода." Вот поэтому я и написал в первом комменте "Может, синтаксически он и простой, но разработать хотя бы мвп не в виде ебдеддед или кли уже требудет очень хорошей квалификации или затратить кучу времени на то, что бы было сделано реально простым языком раз в 10 быстрее" "Управление памятью не большая беда." То-то из линукса вычищают с каждым релизом кучу проблем с памятью и клепаются CVE по кд. ""Простота" в работе скриптовых языков это лишь следствие немного большей выразительности" Однако, это следствие позволяет в разы ускорить работу программиста, и с это невозможно опровергнуть, не закладывая в знание си огромную квалификацию
@@shalidor1619 уметь в параллельность через танцы с бубном и иметь её реализацию встроенную в язык так же органично как например в GO это разные вещи. Так то можно договориться до "всё что программируется под CPU можно написать на ассемблере", ну а чё... можно же? Вот и ты прекрасно понимаешь это в примере про брейнфак. И не забывайте, что программирование не ограничивается перепаковками jsonчиков из HTTP-в базу-из базы-в http. Кто вообще сказал, что веб это и есть "по дефолту программирование"? Кто-то прошивки для ракет делает, кто-то для суперкомпьютеров программы готовит, кто-то марсоход сажает в атмосферу Юпитера, разные есть дела.
Ага. Из Простых. Если писать простые программы, не сложнее сортировки пузырьком то да, ерунда. А вот когда уже начинаешь углубляться, код растет, А потом еще т указатель на указатель, то начинаются такие проблемы, что просто офигевайтэн.
@simen0ff Мне плюсы нужны для своего проекта, в котором будет критичны их возможности в оптимизации, в борьбе так сказать с конкурентами, а так обычному человеку если он не собирается заниматься тематиками в которых плюсы рулят, то и да они и нафик таким не нужны, но надо просто понимать кол-во вакансий/мест с языками типа яваскрипт и прочей лабуденью постоянно снижается, а кол-во типов мамкиных кодеров растет в геометрической прогрессии и уже условно 40 таким людям занимающимся такой лабуденью становится сложно найти работу, если они не организовали свой бизнес или ушли в другую сферу, причем человек занимавшийся вышеописанными языками быстро перекатиться на плюсы не сможет банально, если у него соответствующего образования или полученных базовых знаний.
Мне уже кидали ссылку, но там много букв, а я работой загружен. Может как дела разгребу разберу статью Столярова "Почему Си не должен быть первым ЯП". Она короче гораздо. А с учетом того, что CMUSTDIE написали ученики Столярова, я думаю, что особенной разницы в их аргументации не будет.