Skip to content

Instantly share code, notes, and snippets.

@yugoslavskiy
Last active February 12, 2017 15:21
Show Gist options
  • Save yugoslavskiy/015fe34eb7ab8b806224b7ef77793d80 to your computer and use it in GitHub Desktop.
Save yugoslavskiy/015fe34eb7ab8b806224b7ef77793d80 to your computer and use it in GitHub Desktop.
to Ann Weine with love

Introduction

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

  • На этом языке написаны основные модули операционных систем

  • До сих пор множество программного обеспечения пишется на си, в частности для embedded-устройств

  • Этот язык позволяет понять принципы работы с памятью, для того, чтобы избежать распространенные уязвимости, которые могут привести к серьезным утечкам данных или system compromise.

  • Язык довольно простой для понимания

С чего вообще начать

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

Компилятор

Для *nix систем до сих пор лучшим компилятором остается gcc - http://gcc.gnu.org/. Для Windows - Microsoft Visual Studio - https://www.visualstudio.com/ru/ Или более легковесная: MinGW http://www.mingw.org/ IOs - Apple X Code - https://developer.apple.com/xcode/ Межплатформенная - Qt - https://www.qt.io/download/ Ну и для совсем ленивых - онлайн компилятор - https://www.tutorialspoint.com/codingground.htm

Хаааачу кодить - Самое начало

Основы программирования - http://cppstudio.com/cat/271/273/

Level L

Вики-учебник - https://ru.wikibooks.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%A1%D0%B8_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B0%D1%85

Курсы на Си - на русском - http://www.intuit.ru/studies/courses/97/97/info Курсы на Си - на английском - https://www.coursera.org/courses?query=c%20programming

Level Mod

Для среднего уровня знания языка, кроме знания самих конструкций, я бы упомянула следующие темы: Типы/Структуры данных, указатели.

9

Thomas H. Cormen Introduction to Algorithms, 3rd Edition (MIT Press) Steven S Skiena The Algorithm Design Manual

Richard M Reese Understanding and Using C Pointers: Core Techniques for Memory Management

Level H

Для высокого уровня знания языка, я уже сделаю деление на специализации:

Security

Высокое знание memory layout - что как и зачем. Как писать безопасный код - https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

9

Peter Van der Linden, Expert C Programming. Deep C Secrets.

Generic

Ваш вопрос уже был задан и на него уже ответили. Если гугл не помогает, советую следующие Вопросы-ответы - на русском http://www.cyberforum.ru/c-beginners/
Вопросы-ответы - на английском https://www.reddit.com/r/C_Programming/

Стандарты

Си 11 - http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853

Си 99 - http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=29237

@Frosne
Copy link

Frosne commented Feb 12, 2017

Я же не дописала

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment