Учусь на программиста. Хочу определится с выбором будущей профессии, поскольку на учебе дают всего по немногу. Поэтому прошу рассказать, какие есть виды профессий по программированию и соотвественно разновидностей программирования.
-
Java developer: к примеру, чем будет заниматься человек на данной вакансии? Например, стоит мне сильно заворачиваться с задачей типа "нарисовать ромб", которую я описывал в своей предыдущей теме, если я решу готовится на данную вакансию? – ArniLand Feb 28 '11 at 18:37
-
@ArniLand Пожалуйста, используйте комментарии, если Вы хотите уточнить ответ. Или открывайте новую тему. – Nicolas Chabanovsky Feb 28 '11 at 18:49
4 Answers
Всё cy6erGn0m сказал правильно, но, думаю, стоит некоторые пояснить.
- Сайты. Ну это понятно. Информационные сайты, для мобильных, приложения - типа зохо и прочих офисов.
- Обычные приложения. Для разных ОС - Windows, Мак, юниксы различные и более редкие типы.
- Серверные приложения. Это приложения типа игровых серверов, банковских, различных IM-сообщений, баз данных и много чего другого. Когда есть специализированная программа-клиент.
- Мобильные приложения. Java-приложения, игры, нокии, симбианы, айфоны, андроиды, екниги и что-то там ещё. То есть на мобильных телефонах, смартфонах и подобных приборах.
- Встраиваемые системы. О, это весьма интересная отрасль. Плееры, телефоны, навигаторы, роботы, брелоки цифровые, термометры, управлялки разные. То есть тесно связанные с электроникой и часто работающие в одной микросхеме. Микроконтроллеры 8, 16, 32 бит (ARM, Atmel, Microchip, STM, Freescale, Motorola и иные), цифровые сигнальные процессоры, ПЛИС (программируемые логические интегральные схемы) или просто логические схемы (хотя мало кто этим занимается в обычной жизни). Цифровая электроника.
- Научные разработки. Это программирование на спец. языках математических (как пример MATLAB), в средах моделирования (ANSYS) и просто написание программ, решающих научные и инженерные задачи. И САПР.
Не указанные направления:
- Системное программирование. То есть написание драйверов для оборудования, написание ядра ОС. Низкоуровневое программирование. Компиляторы и интерпретаторы, думаю, относятся к этому же.
- Игры. Странно, что их не указали. Но это гигантская отрасль индустрии =) Разработка 2D и 3D игр... DirectX и OpenGL. Шейдеры. И для консолей игровых.
- Параллельное программирование, в том числе и на GPU. CUDA и OpenCL, OpenMP, MPI. Расчёты на графическом модуле.
- Разработка библиотек общего назначения для каких-либо функций. Например, рендеринг шрифта. Или аудио- и видеокодеки.
- Написание плагинов и скриптов к существующим системам. Для фотошопа, например.
- Олимпиадное программирование и решение задач. Сюда можно отнести и программирование на различных "непрактичных" языках.
- Программирование для бухгалтерских, финансовых и прочих деловых продуктов. Типа 1С: Предприятия.
- Программирование экспертных систем. Думаю, оно стоит быть вынесенным отдельно.
- Программирование баз данных. Серьёзных, которые куда как больше, чем две-три таблички=) Недаром для них создан язык специальный.
Но это не все, их куда как больше. Просто я часть не знаю, а часть не смог вспомнить.
- 4,152
- 17
- 21
-
1А всякие бухгалтерские фигни типа 1C наверное в отдельную категорию? – Vladimir Gordeev Feb 28 '11 at 17:00
-
О, точно =) Я ж их вспомнил, хотел написать и забыл, что вспомнил =) Бухгалтерские и прочие финансовые. – Алексей Сонькин Feb 28 '11 at 17:00
-
"Олимпиадное программирование и решение задач. Сюда можно отнести и программирование на различных "непрактичных" языках." -- может это всё-таки мимо? Это ж не отдельная профессия и за это не платят. – Vladimir Gordeev Feb 28 '11 at 17:06
-
Ну как сказать =) Кто-то может стать учителем, репетитором али сенсеем для какой-то команды. Платно или бесплатно, в рамках гуманитарной помощи. Тем более, что форум расчитан на многократное использование ответов, так что пусть будет=) Тут же спрашивали не только профессии, но и разновидости. – Алексей Сонькин Feb 28 '11 at 17:08
-
- Web-разработка сайтов
- Разработка веб-приложений (может пересекаться с первым)
- Разработка "обычных" приложений, толстых клиентов
- Разработка серверных приложений
- Разработка мобильных приложений (j2me, android, iphone, etc)
- Разработка средств автоматизированного тестирования
- Разработка автоматических тестов
- Разработка приложений для встраиваемых систем (embedded systems)
- Всякая Science-разработка
- 19,707
- 1
- 33
- 39
-
Я не профи, а что такое "Разработка средств автоматизированного тестирования", "Разработка автоматических тестов"? – Vladimir Gordeev Feb 28 '11 at 16:29
-
Ну, есть средства для автоматического тестирования. Например, средство анализа результатов тестовых прогонов, иди средство для поиска подходящей машины (архитектура, ось, версия, etc) и запуск на ней тестов. В то же время, можно писать сами автоматические тесты, которые и будут выполняться во время разработки, перед релизами т.д. – cy6erGn0m Feb 28 '11 at 16:33
-
Что-то вроде QA? Просто я не думал что это отдельная профессия. – Vladimir Gordeev Feb 28 '11 at 16:37
-
По буржуйски это называется Software Quality Engineering. Работа часто пересекается с другими областями, но тут всего по чуть-чуть. И да, надо иметь представление о предмете, о методах и средствах тестирования. Своя специфика. – cy6erGn0m Feb 28 '11 at 16:42
Тема очень обширная и почти всё, что я знаю, уже сказали. Добавлю только немного про "встраиваемые системы". Правильное их название - "Системы реального времени". Область очень актуальная и связана не только с программированием различных прошивок под плееры, телефоны и тп. В сферу её употребления входят всевозможные роботы, автоматизированные системы (типа управления светофорами в развитых странах), космические спутники, медицинское оборудование и ещё много чего. Используемое ПО (кроме простых прошивок) - ОС типа Qnx. Языки программирования - структурный С, Smalltalk, различные функциональные и рекурсивно-логические языки типа Lisp, Erlang, Prolog.
- 51,426
- 87
- 267
- 507
- 2,515
- 3
- 25
- 37
-
-
Задачи типа "нарисовать треугольник или ромб" относятся к алгоритмической категории, то есть тут не чистое программирование, но и примесь математики. К приведенной специальности не относятся ни коим образом. От вас будут прежде всего требовать знание языков (чем лучше, тем лучше) и первые полгода там будете заниматься отладкой чужих кодов, а потом, возможно, вас будут включать в более-менее серьёзные проекты. Хотя знание алгоритмов могло бы в перспективе помочь вам устроиться на более престижную работу (возможно, даже за рубежом): математики сейчас везде в почёте. – RomanChugunov Feb 28 '11 at 18:48
Еще есть реверс-инжиниринг: восстановление исходного алгоритма работы программы при наличии всяких ограничений :-). Обычно продолжается в виде реализации модифицированного алгоритма работы в своей программе. Учитывая, что как правило требуется разбор бинарного кода, без наличия каких-либо исходных кодов разбираемого программного продукта, то требуется высокая квалификация: умение работать со специализированными инструментами (дизассемблеры, отладчики), знание ассемблера и работы ПК на низших уровнях и пр.
Платят соответственно очень хорошо.
-
1Не обязательно только программ работающих на компьютере - во встраиваемых устройствах тоже =) Сделать клон прибора, например. Расковырять протокол или принцип работы =) Правда, только по внешним признакам работы прибора и его реакции на внешние воздействия - в микросхемах код если и есть, то он защищается от считывания. – Алексей Сонькин Mar 27 '11 at 01:25
-
Правильно, можно ковырять и железки. Это даже интереснее. Но это уже не программирование в чистом виде :-) А нечто сбоку.
в микросхемах код если и есть, то он защищается от считывания.
Я буду не оригинален, но есть способы считать и такие. Как механические (сошлифовать корпус микросхемы и, например, туннельным микроскопом (о, как божественно звучит это словосочетания :-D) посмотреть состояние ячеек), так и электрические - подать специальный набор сигналов на определенные ноги и считать содержимое внутренней памяти микросхемы.
– gecube Mar 27 '11 at 01:33 -
Ну, конечная цель - узнать алгоритм. Хотя да, к программированию сам процесс относится слабо =3
Да-да, у меня как раз в гараже туннельный микроскоп есть =D Но с этим связаны тоже определённые трудности - нужно точно локализовать местонахождение транзисторов флеш-памяти или какой иной, определить, какие из них к каким адресам относятся и считать значение, не повредив его... =)
А набора сигналов может и не быть - если, например, это просто некая интегральная логическая схема, а не контроллер или плис. Там и программной памяти-то может и не быть =D
– Алексей Сонькин Mar 27 '11 at 01:42