LINUX.ORG.RU

всю жизнь работал с высокоуровневыми штуками, нужно писать без них

 , , , ,


1

4

В общем, всегда писал приложения независимо от платформы (шindoшs, liпuх, мас, bb, апdгoid) и направления (консольные\гуёвые) с использованием, собственно, фреймворка Qt. И тут, внезапно, появилась интересная вакансия - писать придётся на Pure C (sic!) для Linux страшные сетевые да многопоточные штуки. И не то, чтобы меня это пугает, нет. Всю жизнь мечтал изучить низкоуровневое программирование - ведь true way, но, похоже, у меня one love, обмазался сегодня Йоном Снайдером да Шоном Уолтоном и сейчас испытываю большую попоболь. Ну ведь и вправду, всё это жутко неудобно - PF_INET, SOCK_STREAM, sockaddr_in, СТРУКТУРЫ и НИКАКОГО ООП (и это только начало Пути). Кому это может понравиться? То ли дело - взял QTcpServer, взял QTcpSocket, прикрутил QThread или QtConcurrent по задаче да желанию - готово.
Вопрос к сообществу - стоит ли учить всё это дело (объективно - разумеется, эти знания никогда не повредят, субъективно - есть вариант продолжить работу с meego\maemo\tizen и любимым няшенькой Qt, параллельно занимаясь собственными проектами), или я навсегда потерян для высокого общества низкоуровневых программистов? Раньше я даже об STL старался руки не марать, а тут, право, настоящая чернуха начнётся.



Последнее исправление: vladimirsmirnov9 (всего исправлений: 2)

Если заплатил налоги есть желание учиться, то ты не потерян. Не вижу причин для пессимизма.

pathfinder ★★★★
()
Последнее исправление: pathfinder (всего исправлений: 1)

фреймворка Qt
высокоуровневыми штуками

No.

anonymous
()
Ответ на: комментарий от Legioner

C++ не нравится, а чистый C больше нравится

Та же байда. Сколько ни мучился над плюсиками, а такой «свободы полёта», как в Сях, не добился. Не дано.

А вот с джавой по тиху идёт. Худо-бедно.

Deleted
()
Ответ на: комментарий от anonymous

Ты не пишешь, но намекаешь на какую-то «нормальную работу», на которую не берут без фундаментальных знаний. Такая работа разве что в университетах бывает. А среди программистов фундаментальные знания нужны лишь тем, кому хочется их знать просто ради интереса. На деле они не пригодятся, и все эти «гоблины с рсдн» - прекрасное тому подтверждение.

anonymous
()
Ответ на: комментарий от anonymous

Ты не пишешь, но намекаешь на какую-то «нормальную работу», на которую не берут без фундаментальных знаний. Такая работа разве что в университетах бывает. А среди программистов фундаментальные знания нужны лишь тем, кому хочется их знать просто ради интереса. На деле они не пригодятся, и все эти «гоблины с рсдн» - прекрасное тому подтверждение.

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

Архитектура. Человек должен представлять во что компилируется код, понимать основные оптимизации (вроде хвостового вызова), понимать как выглядит генерация и захват исключений, представлять во что компилируются объекты, вызов методов, конструкторов, деструкторов, в том числе при сложном наследовании. Нужно понимать как выглядит работа с памятью на низком уровне, что такое стек, куча, регистры. Общее понимание кеша процесcора, загрузки страниц и так далее.

Что даёт знание архитектуры? Программист не как обезьяна заучиват мантры с++, например о том, что нельзя кидать исключение в деструкторе, а в конструкторе его кидать можно и нужно, а ПОНИМАЕТ, что, как и почему. После получения этих знаний многие вопросы просто отпадают навсегда для всех языков и платформ. Для нового инструмента квалифицированный специалист просто уточняет детали реализации и начинает работать.

Знание сетей. Вообще, нормальный программист должен иметь базовые навыки администрирования сетей. Это как раз часть тех самых «прикладных» знаний за которые платят деньги. Человек должен понимать, что происходит при работе сетевых программ на всех этапах, на достаточно подробном уровне. Читать Стивенса и других авторов по отдельным темам.

Знание операционных систем. Ну, тут тоже вроде понятно. Программы выполняются на ОС, и этот пункт сильно пересекается с прошлыми двумя. Обмазываться вендой по желанию, мне хватает линукса (posix). Читать, опять же Стивенса.

Парадигмы программирования. Нужно для общего развития. Тема флеймогонная, подробно писать не буду. Но считаю, что ознакомиться с декларативным, и функциональным программированием, поиграться с метапрограммированием, изучить ООП нужно каждому профессиональному разработчику.

По поводу работы. У меня домика у озера нет, я могу судить о московском рынке труда. Пол года назад менял работу. Ходил в Яндекс, Акронис, CQG, Касперыч и несколько контор помельче. Интересовался вакансиями linux разработчика (серверная часть). Везде, мля, ВЕЗДЕ меня спрашивали по указанным пунктам и по плюсам. Ну, конечно, было много задач на сообразительность. В результате получил несколько интересных предложений, выбрал отличную работу с хорошими условиями.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.