работа Си программистом
От: SilentNoise  
Дата: 21.04.11 14:54
Оценка:
Всем привет.
Работал системным администратором, на той же работе освоил Си (чистый, без плюсов).
Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(
Живу не в дефолт-сити, и найти работу системным программистом (та область, где именно чистый си востребован) весьма проблематично. В фрилансе тоже как-то не получается — заказов мало, в основном востребовано веб-программирование/СЕО.
Собственно, вариантов вижу два:
1) Смириться и таки начать изучать что-то более прикладное — Java, C# и т.п. Очень не хотелось бы, оставляю как крайний вариант;
2) Переезжать жить в более крупный город, найдя работу на C. Тут видимо потребуется "подтянуть" знания ассемблера и какой-либо предметной области.
Как вы думаете, есть ли возможность зарабатывать, программируя на Си, не будучи великим гуру — или уже необходимо знание более популярных ЯП?
Re: работа Си программистом
От: Панда Россия  
Дата: 21.04.11 15:22
Оценка: +2
Здравствуйте, SilentNoise, Вы писали:

SN>вызывает неприятие концепция ООП =(


Я думаю, почти у всех, кто учился программировать на чистом С, а потом стал переходить на С++, она вызывала неприятие.
Надо себя пересилить. Когда научитесь ей пользоваться, это пройдет. Сами над этими своими словами смеяться будете.
Re: работа Си программистом
От: robin_of_the_wood Россия  
Дата: 21.04.11 15:26
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>Работал системным администратором, на той же работе освоил Си (чистый, без плюсов).

SN>Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(
Не ради флейма а токмо из личного интереса. Можно подробнее про это самое неприятие?
Меня интересуют реальные причины возможно основаные на личном опыте а не "прочитал на одном форуме статью"
ну и если не секрет конечно.
Проектирование велосипедов для слепых жирафов
Re: работа Си программистом
От: DimaX  
Дата: 21.04.11 15:36
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>Всем привет.

SN>Работал системным администратором, на той же работе освоил Си (чистый, без плюсов).
SN>Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(
SN>Живу не в дефолт-сити, и найти работу системным программистом (та область, где именно чистый си востребован) весьма проблематично. В фрилансе тоже как-то не получается — заказов мало, в основном востребовано веб-программирование/СЕО.
SN>Собственно, вариантов вижу два:
SN>1) Смириться и таки начать изучать что-то более прикладное — Java, C# и т.п. Очень не хотелось бы, оставляю как крайний вариант;
SN>2) Переезжать жить в более крупный город, найдя работу на C. Тут видимо потребуется "подтянуть" знания ассемблера и какой-либо предметной области.
SN>Как вы думаете, есть ли возможность зарабатывать, программируя на Си, не будучи великим гуру — или уже необходимо знание более популярных ЯП?
Re: работа Си программистом
От: 0x7be СССР  
Дата: 21.04.11 15:36
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>Всем привет.

SN>Работал системным администратором, на той же работе освоил Си (чистый, без плюсов).
SN>Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(
"Работал автомехаником, на той же работе освоил токарный станок. Пытался освоить фрезерный — вызывает неприятие концепция фасонного фрезерования"
Re[2]: работа Си программистом
От: Панда Россия  
Дата: 21.04.11 15:59
Оценка: +3 :))) :))) :))) :))) :))) :))
Здравствуйте, 0x7be, Вы писали:

0>"Работал автомехаником, на той же работе освоил токарный станок. Пытался освоить фрезерный — вызывает неприятие концепция фасонного фрезерования"


Обычно освоение ООП после опыта только процедурного программирования выглядит скорее так:
"Когда-то освоил коловорот для сверления дырок. Теперь попробовал освоить сверлильный станок — вызывает неприятие, что там какие-то непонятные крутилки, регуляторы, зажимы... Попытался зажать в нем заготовку и посверлить — да это просто фигня какая-то, очень неудобно туда с коловоротом подлезать. Стоять приходится, скрючившись, и когда коловорот крутишь, рукой за станок все время задеваешь.
Еще там какая-то кнопка "Вкл" и шнур с вилкой, зачем они нужны — пока не разобрался и разбираться уже желания нет"
Re: работа Си программистом
От: DimaX  
Дата: 21.04.11 16:14
Оценка:
Возможно где-то и платят за знание языка "С" — не думаю, что много. Ваш подход — подход студента: хочу/не_хочу, буду/не_буду.
Как специалист вы из себя ценности не представляете, — терять вам нечего, идите туда, где сейчас больше платят. Может мотив и не вполне верный, но уж всяко лучше чем "изучил С. хочу только С".
Re: работа Си программистом
От: dilmah США  
Дата: 21.04.11 16:42
Оценка: :)
В С++ есть хорошие вещи: шаблоны и деструкторы.
Что касается ООП туфты -- забудь ее и просто используй методы объектов как замыкания http://en.wikipedia.org/wiki/Closure_(computer_science)
Re[2]: работа Си программистом
От: SilentNoise  
Дата: 21.04.11 17:12
Оценка: :)
Здравствуйте, robin_of_the_wood, Вы писали:

___>Не ради флейма а токмо из личного интереса. Можно подробнее про это самое неприятие?

___>Меня интересуют реальные причины возможно основаные на личном опыте а не "прочитал на одном форуме статью"
___>ну и если не секрет конечно.

Не претендую на объективность, но их две:
1) Сложность — не ООП как такового, а скорей в том виде, в котором оно в С++ — ООП + полуручное управление памятью == какое-то месиво А это только одна из возможностей С++, в результате меня ужасает тот объем, который нужен чтобы "знать С++", а не просто некое подмножество языка, пригодное для написания программ.
Си, если не придираться к мелочам, довольно простой и логичный язык, что позволяет посвятить больше времени самой задаче/алгоритмам. Что хотелось бы в нем улучшить — это снизить объем кода для довольно простых вещей, что С++/Java решают лишь отчасти (взять хотябы "public static void main(String args[])" а-ля "белки-истерички" в джаве).
2) Тотальное навязывание концепции ООП — и дело даже не в том, что в Java всё является объектом, а в том, что так пишут в наших конторах (и требуют того же).

Здравствуйте, DimaX, Вы писали:

DX>Возможно где-то и платят за знание языка "С" — не думаю, что много. Ваш подход — подход студента: хочу/не_хочу, буду/не_буду.

DX>Как специалист вы из себя ценности не представляете, — терять вам нечего, идите туда, где сейчас больше платят. Может мотив и не вполне верный, но уж всяко лучше чем "изучил С. хочу только С".

Скорее так — наиболее очевидный вариант дальнейшего развития (высокоуровневые ЯП) мало привлекает меня, потому и интересуюсь — а какие есть варианты еще...
Re[3]: работа Си программистом
От: robin_of_the_wood Россия  
Дата: 21.04.11 18:05
Оценка: +1
Здравствуйте, SilentNoise, Вы писали:

SN>Не претендую на объективность, но их две:

SN>1) Сложность — не ООП как такового, а скорей в том виде, в котором оно в С++ — ООП + полуручное управление памятью == какое-то месиво
Давайте рассмотрим слогаемые по отдельности:
1. Что именно Вам кажется сложным в реализации ООП именно в С++? С чем сравниваете?
2. Полностью ручное управление Вас не смущает? И сложным не кажется?


SN> А это только одна из возможностей С++, в результате меня ужасает тот объем, который нужен чтобы "знать С++", а не просто некое подмножество языка, пригодное для написания программ.


Чтобы "знать" любой другой язык нужен немалый обьем знаний и практики. Это ужасно, но это факт.
Поверхностные знания не ценятся. Именно поэтому проводятся собеседования и не только для С++ программистов.
Ну и еще с моей точки зрения для того чтобы сравнивать два языка нужно знать их оба.

SN>Си, если не придираться к мелочам, довольно простой и логичный язык, что позволяет посвятить больше времени самой задаче/алгоритмам. Что хотелось бы в нем улучшить — это снизить объем кода для довольно простых вещей, что С++/Java решают лишь отчасти (взять хотябы "public static void main(String args[])" а-ля "белки-истерички" в джаве).

Большой проект в процедурном стиле — это очень сложная штука. Вот где настоящий ужас.
Конечно теоритически и там все можно БЫ разбить на слабосвязаные модули. Но я лично не встречал.

SN>2) Тотальное навязывание концепции ООП — и дело даже не в том, что в Java всё является объектом, а в том, что так пишут в наших конторах (и требуют того же).

В каждой конторе требуют свое. Если требования у многих контор схожи, то скорее всего для этого есть причины.
Их можно обсуждать, соглашаться и не соглашаться.
Но пока в большинстве вакансий требуют ООП, а на форумах пишут о его провале.
Тут каждый выбирает для себя (с)
Проектирование велосипедов для слепых жирафов
Re: работа Си программистом
От: azzx Россия  
Дата: 21.04.11 18:40
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(


М.б., имхо, тут не неприятие концепции ООП, а неприятие этих двух языков: плюсы потихоньку теряют ту нишу, где были востребованы, а та Java, что нудна — J2EE — имеет тоже некислый такой порог вхождения (да и монструозна сильно, имхо).
А само ООП штука вполне удобная и порой применяемая и на чистом С.
Вот только что посоветовать, чтобы "проникнуться" — это вопрос, да...
Re: работа Си программистом
От: sc Россия  
Дата: 21.04.11 19:50
Оценка:
продолжать работать админом, а в свободное от работы время пробовать участвовать в опенсорсных проектах.
Re: работа Си программистом
От: zakima Канада  
Дата: 21.04.11 21:08
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>Работал системным администратором, на той же работе освоил Си (чистый, без плюсов).

SN>Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(

Это только показывает что опыт был только в очень маленьких проектах, где (возможно) ООП не сильно помогает (хотя скорее всего все равно помогает).

Большое проект в процедурном стиле это ужас. Единственное спасение это применять ООП на C, но это просто значит что имплементировать таблицу виртуальных функций самому.
Re: работа Си программистом
От: __kot2  
Дата: 22.04.11 02:58
Оценка:
Здравствуйте, SilentNoise, Вы писали:
SN>Хочется программировать на C, пробовал освоить Java и C++ — вызывает неприятие концепция ООП =(
смысл ООП в том, чтобы держать данные рядом с кодом обрабатывающим эти данные и в том, чтобы избежать дублирования когда требуется две немного различные реализации имеющие много общего — дабы не тупо копипастить и потом с мучением это саппортить.
Re[2]: работа Си программистом
От: FlamingWind Россия  
Дата: 22.04.11 04:38
Оценка: +1
Здравствуйте, DimaX, Вы писали:

DX>Возможно где-то и платят за знание языка "С" — не думаю, что много.


Для всяких embeded систем, зачастую, только C и подходит. Компилятор на С++ или вообще отстуствует, или выдает слишком медленный код.

Другое дело, что там нужно идеально знать C и разного рода методы оптимизации кода. Так же нужно очень хорошо знать ASM и уметь быстро разбираться в архитектуре железяк.

Вот для знающих все перечисленное спецов — хлеб с маслом всегда найдет и будут, в целом, они получять гораздо больше программиста на C++.
Re: работа Си программистом
От: Tilir Россия http://tilir.livejournal.com
Дата: 22.04.11 06:10
Оценка: +1
Здравствуйте, SilentNoise, Вы писали:

SN>1) Смириться и таки начать изучать что-то более прикладное — Java, C# и т.п. Очень не хотелось бы, оставляю как крайний вариант;

SN>2) Переезжать жить в более крупный город, найдя работу на C. Тут видимо потребуется "подтянуть" знания ассемблера и какой-либо предметной области.
SN>Как вы думаете, есть ли возможность зарабатывать, программируя на Си, не будучи великим гуру — или уже необходимо знание более популярных ЯП?

Такая работа есть и я сам её нашёл (неоднократно находил). Хорошие сишники прекрасно оплачиваются; их не хватает. Но чтобы получить такую работу вы должны быть не только сишником, а профессионалом с широким пониманием технологий и осознанным предпочтением к низкоуровневым вещам. И да, язык С у вас должен быть при этом задрочен до уровня "родной", до уровня "стандарт наизусть". Для начала я рекомендую вам набираться опыта где получится, первые два года не ждите больших зарплат и признания.

Вот те варианты, которые я знаю для чистого С:

— mobile/embedded (но тут нужно знание предметной области в случае mobile и особо заточенный мозг в случае embedded, я отработал в embedded два года на госпредприятии и это были отнюдь не розы и песни, пришлось и на полигон поездить и всё такое)
— безопасность (я тут не буду комментировать, тоже пару лет отработал в этой области, ничего кроме C/Assembler там особо не нужно, разве что иногда приходится спешно доучивать всякий JavaScript и прочее) плюс хорошо знать скользкие внутренности Windows.
— компиляторы (это то, где я работаю сейчас -- и опять-таки тут требуется C, но *не только* C, а ещё и способность отлаживать громадные дампы внутреннего представления данных, понимать основные алгоритмы оптимизации графа выполнения и т.п.)

В общем путь любого сишника труден и тернист, удел наш высок и мы одиноки. В современном мире -- никому бы не советовал идти им. Казалось бы -- садись на джаву клепай формочки. Но с другой стороны я рад что ещё появляются такие люди; это внушает надежды.

Удачи
Re[2]: работа Си программистом
От: ShubinEV Россия http://erladvisor.blogspot.de/
Дата: 22.04.11 06:21
Оценка:
Здравствуйте, zakima, Вы писали:

Z>Большое проект в процедурном стиле это ужас. Единственное спасение это применять ООП на C, но это просто значит что имплементировать таблицу виртуальных функций самому.


А как же Glib и GTK? Там ООП во всю используется, и наследование есть, и таблица виртуальных функций реализорвана, но при этом всё на C.
Re[3]: работа Си программистом
От: zakima Канада  
Дата: 22.04.11 06:34
Оценка: +1
Здравствуйте, ShubinEV, Вы писали:

SEV>Здравствуйте, zakima, Вы писали:


Z>>Большое проект в процедурном стиле это ужас. Единственное спасение это применять ООП на C, но это просто значит что имплементировать таблицу виртуальных функций самому.


SEV>А как же Glib и GTK? Там ООП во всю используется, и наследование есть, и таблица виртуальных функций реализорвана, но при этом всё на C.


Где-то было сказано что это невозможно? И на C можно писать в ООП стиле (и самому приходилось писать). Но так как это не встроенная "фича", то очень много времени и ресурсов тратится на это.
Re[3]: работа Си программистом
От: ro_man  
Дата: 22.04.11 06:45
Оценка: +4
Здравствуйте, FlamingWind, Вы писали:

Не соглашусь. Сфера микроконтроллеров с plain C (безо всяких embedded OS) — довольно депрессивный сегмент, так как завязана на производство железок. Насчет знаний — нужны не идеальные знания С, а знания об ограничениях, накладываемых используемым компилятором. ASM — как правило, совершенно не обязателен. Вот копание в даташитах — это да, занимает большую часть времени. И знание схемотехники (хотя бы цифровой) до кучи. Все ИМХО, основанному на собственном опыте и мнению коллег/знакомых, естественно.
И еще, после привычки к плюсам, резкий переход на чистый С вызывает некоторое чувство дискомфорта (постоянно чего-то не хватает).
Re: работа Си программистом
От: alzt  
Дата: 22.04.11 07:02
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>1) Смириться и таки начать изучать что-то более прикладное — Java, C# и т.п. Очень не хотелось бы, оставляю как крайний вариант;

SN>2) Переезжать жить в более крупный город, найдя работу на C. Тут видимо потребуется "подтянуть" знания ассемблера и какой-либо предметной области.
SN>Как вы думаете, есть ли возможность зарабатывать, программируя на Си, не будучи великим гуру — или уже необходимо знание более популярных ЯП?

Зарабатывать можно всегда, даже если программировать не умеешь. Си сейчас не мейнстрим, поэтому там либо ты гуру и получаешь много, либо середняк и получаешь мало только из-за того, что предложений мало.
Если перейти в Java, то предложений будет намного больше, соответственно середняк сможет расчитывать на хорошую зарплату. Но и конкуренция больше будет.

Собственно, если хочется гарантированной не низкой (но и не высокой) зарплаты, то надо учить то, что везде требуется. Си в этот список не входит.

Если есть желание добиться чего-то, не просто сидеть на работе 8 часов и кодить какую-нибудь базу данных, то имеет смысл углубляться в Си. Но здесь переезд обязателен.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.