Изучая Си. Начало.

Кубик рубикМой опыт программирования ~9 лет. Я писал на паскале, дельфи, перл и пхп. По-настоящему умею писать лишь на PHP. Кроме того у меня нет специального образования. Приходилось учиться всегда. У меня даже был кризис на эту тему, устал. Где-то пару лет назад я осознал наличие так называемой «базы». У каждой предметной области будь то бухгалтерия, медицина, программирование есть пласт информации который каждый соответствующий специалист должен обладать — базовые знания.

Так как базы у меня не было, не было и единой картины мира. Соответственно многие знания не получалось связывать вместе. Отсутствие связей очень усложняет запоминание и понимание. Так-же усложняется понимание куда двигаться дальше.

Всегда хотел изучить си. На нём написано очень-очень-очень много всего, мне казалось не спроста. Я считаю знание си даёт реальное представление о том как работает компьютер на низком уровне. Так-же даёт представление об алгоритмах, структурах данных. В общем знание си — это и есть база.

Я много лет пытался овладеть сями. Много лет, мне это не удавалось. В общем чудо произошло наступило понимание как это работает. Здесь я хочу дать ссылки на литературу и указать с чего начать.

Первое с чего следует начать это с поиска практической задачи.

Следующее. Поставить себе цель должна быть полностью понимать исходный код. Для этого нужно этот исходный код где-то взять. Пару лет назад я перешёл на линукс, здесь с этим проблем нет. Можно посмотреть исходные коды проектов nginx, pgbouncer, whois, так-же взять что-нибудь с GNU. Получить исходный код при помощи apt-get, можно командой


cd ~/src
apt-get source package_name

Понимание что изучение языка программирования сводится к освоению его синтаксиса, конструкций, а так-же стиля как принято на нём писать. Первое и второе это:

  • Типы данных и их об явление
  • Выражения и присваивания
  • Операторы
  • Функции
  • Работа с файлами
  • Если язык объектно ориентированный то ещё классы

Понимание как нужно писать приходит с опытом. Нужно использовать чужой код и смотреть как он исполнен.

В общем главное — не бояться! © :)

Так-же необходима среда для экспериментов. Чем быстрее и проще появляется возможно ставить эксперименты, тем проще освоить тему.

Книги

Инструменты

  • Eclipse CTD
  • Geany
  • Code::Block

Geany — мой выбор. Спасибо статье Алексея Снастина «Обучение программированию в Linux на примере интегрированной среды разработки Geany: Часть 1.Основы работы в Geany – создание простого приложения». Почитать.

Первая компиляция

Так-же скажу ещё что такой код сохранённый в файл test.c

#include <stdio.h>
int main (void)
{
printf("Hello, world!\n");
return 0;
}

Компилируется такой командой
gcc -Wall -o "test" "test.c"

Будет создан исполняемый файл с именем test.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *