Вместо введения

Предисловие
Внезапно мне захотелось переписать предыдущее введение т.к. оно не соответствует текущим целям и идеям. Всё что можно увидеть на страницах этого блога есть результат практической деятельности.  Поэтому если вы не верите тому что написано, можете попробовать сами, о результатах смело пишите в комментариях. Я с радостью приму любые возражения и другой взгляд на решение проблемы.

Общее направление
В качестве основного увлечения, а заодно и направления выбрана встраиваемая электроника (embedded electronics). В настоящее время я занимаюсь только цифровой электроникой, т.к. с аналоговой частью у меня беда - слишком много пробелов в знаниях. Из цифровой в свою очередь идут микропроцессоры и микроконтроллеры (архитектура ARM). Было желание заняться программируемой логикой (FPGA), однако сейчас не хватает времени и сил.

Также увлекаюсь (хотя это имеет тенденции к профессиональному подходу) программированию в ОС Linux, используемый дистрибутив - Gentoo Linux (Следовательно все примеры основаны на этой среде, если вы хотите увидеть в моём блоге что-то другое, пишите, обсудим и если вам удастся меня убедить в этом, то обязательно напишу): являюсь активным пользователем (иногда вношу свою лепту в виде замечаний, тестов и исправлений ошибок).

ARM
Наверное самое большое значение в моей жизни после x86 сыграла именно эта архитектура. Не смотря на ранее увлечение AVR, основную тягу к электронике я почувствовал после ознакомления именно с этой архитектурой. Сейчас у меня 2 направления:

  1. Микроконтроллеры (МК) - на базе ядер ARM Cortex-M3 и ARM Cortex-M4F, в качестве производителя я использую только ST (STM32). Это произошло благодаря отладочным платам STM32VL-DISCOVERY и STM32F4-DISCOVERY. Пытался написать несколько курсов по изучению этих МК, но в последствии из-за нехватки времени опять же отложил в долгий ящик:  STM32F407(STM32F4-DISCOVERY) - Нестандартный подходI & STM32-discoveryI & STM32F4-discovery. Строго говоря эти МК были выбраны из-за простоты в программирование процессорного ядра(можно писать на чистом си, без извратов и ассемблерных вставок) и богатой периферии.
  2. Микропроцессоры (МП) - на базе ядер ARM 9 и ARM Cortex-A8. Тут больше разнообразия среди производителей - Atmel, Freescale, TI.
    Вообще всё изучение архитектуры ARM, начиналось с платы Rainbow v1.1. После того как я попробовал, почти всю периферию и запустил Linux Kernel с Busybox мне стало скучно и затея отправилась в долгий ящик.
    Позднее я занялся попыткой запуска Gentoo Linux на плате SK-IMX53-OEM, которая использовалась для одного из проприетарных проектов. Однако в виду упёртости технической поддержки Freescale это не получилось. Да и проект был закрыт.
    Однако совсем недавно я вспомнил что есть плата от TI - BeagleBone. И мне в почту упало письмо о новой версии этой платы BeagleBone Black. А т.к. в сети существовали примеры того что на этой плате запускали Gentoo Linux, выбор пал именно на неё.
Gentoo
ОС Linux я серьёзно пользуюсь давно, на момент написания статьи (18.09.2013) - будет 6 лет.  Выбирал разные дистрибутивы, по сути перепробовал почти все из известных дистрибутивов.

В начале 2004 года когда в первый раз попробовал Mandrake Linux 3(а может и 4) на виртуальной машине, подумал что это не серьёзно, да и качество дистрибутива не позволяло поставить его на ПК (отсутствовали многочисленные драйвера на разное оборудование, не было большинства нужных мне программ).
Позже году в 2006 я попробовал использовать совместно с ОС Windows XP другую ОС - Mandriva Linux, которая была не такой уж и глючной как многим казалось. Однако использование в качестве основной ос было затруднительным.
И вот в 2010 году я узнал что есть такая ОС как Gentoo Linux. После того как я буквально по памяти собрал рабочую систему (так наверное никто не ставит, т.к. в начале у меня не было окружения, то я записывал на работе на листок формата А4 инструкции и пояснения, приходил домой делал всё то что прочитал до этого). Эта система стоит у меня по сей день, Единственное что с момента обновления ПК я сменил x86 ветку на ~amd64.

Сейчас я являюсь активным пользователем этого дистрибутива. Также развиваю направление Gentoo on ARM. Сейчас основной платой для разработки является BeagleBone Black

Ассемблер
С этой группой языков я познакомился очень давно. Раньше в целях обучения, а гораздо поздней в целях разработки ПО напрямую взаимодействующего с аппаратной частью, а иногда и оптимизации алгоритмов с точки зрения быстродействия и потребления памяти. Изначально активно использовался в x86 архитектуре, однако после ознакомления с архитектурой ARM, я стал его использовать и там. Но благодаря тому что ARM разрабатывалась как архитектура под компилятор C, то применение этой группы языков там ограничено ввиду того что в большинстве случаев даже при взаимодействии с аппаратной частью можно обходится и С.

С
Раньше после ассемблера, а сейчас всё больше вместо него я использую С как язык на котором я пишу большинство программ и систем для себя и для других. В моём аккаунте на GitHub, на этом языке написано 90% всего исходного кода. Также т.к. я занимаюсь проблемами toolchain и Linux Kernel и собственно Gentoo Linux, то данный язык я использую практически повсеместно

C++
Этот язык я стал всё больше использовать в своей повседневной деятельности. В частности связку C++ - Qt4 я использую чуть-ли не каждый день. Причин этому действительно много, начиная с того что С++ реально удобней и логичней С, заканчивая тем что С++ позволяет делать простые вещи простыми а сложные делает правильно реализованными. И да как показывает опыт Linux Kernel  технология "ООП в голове", вредит многим проектам. Поэтому также как из буханки хлеба лучше делать бутерброды, а не троллейбус, так и ООП лучше использовать в связке с теми языками где оно есть из коробки, либо не вызывает дополнительных затрат на реализацию.

Python
Т.к. C всё таки компилируемый язык, мне всегда хотелось иметь под рукой язык на котором можно было бы без труда и быстро написать базовый функционал для прототипов. Этим языком стал Python. Также на этом языке я реализую то для чего он предназначен - скрипты автоматизации, различные инструменты для разбора входящей информации, веб-сайты. В голом виде конечно язык сам интересен, т.к. "поставляется с батарейками в комплекте"(присутствует базовая библиотека), однако зачастую использую и другие библиотеки - PyQt, Django, Tornado.

Послесловие
Также хочу добавить ко всему вышеуказанному что всё это хобби и ничего более. Если же у вас есть ко мне профессиональное предложение, то попробуйте меня убедить что это не так.

Многие говорят что знают С исходя того что знают С++, многие говорят что знают С потому что программируют на одном из его неполных множеств. Но я понял что пока не знаю ни С ни С++, т.к современная реализация этих языков настолько переплетена и сбивчиво собрана в текущих компиляторах, что мне остаётся только наблюдать за развитием этой истории
(из моих собственных размышлений).