Загрузка...

C программинг лаунгуаге

Тема в разделе C/C++ создана пользователем Aisy 24 фев 2019. 201 просмотр

Загрузка...
  1. Aisy
    Aisy Автор темы 24 фев 2019 Мигрирую 3509 17 ноя 2018
    Посвящен прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

    Пожалуйста, пользуйтесь https://ideone.com/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержитили ∗.

    Что читать:

    - Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
    - Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
    - Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
    - Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
    - ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
    - Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
    - Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
    - man/Dash/zealdocs

    Чем компилировать:

    - Очевидный GCC.
    • clang: оче годно, батя рекомендует.
    • Intel C++ Compiler: оптимизации, тысячи их.
    • Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
    • Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
    • TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.


    Что еще почитать:

    http://c-faq.com/
    FAQ из comp.lang.c. Древний, но все еще актуален.

    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)

    MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
    Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

    Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

    Онлайн-утилиты:

    • https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
    • http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.
     
Top