LINUX.ORG.RU
ФорумTalks

Настоящий теорминимум программиста.

 ,


4

4

Добрый вечер.

Что должен знать и уметь программист? Как-то видел один весьма объемный список в ЖЖ, но там рак и петросянщина типа «конечный автомат, клеточный автомат, автомат Калашникова».

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

UPD. IMHO, необходимый минимум описан в SICP. Любой программист, даже не читавший эту книгу, рано или поздно получает знания, записанные в ней.



Последнее исправление: power (всего исправлений: 2)
Ответ на: комментарий от Norgat

То, что ты написал программисту может вообще никогда не понадобится

Я уже выше сказал. Если говорить только о том, что стопудово понадобится, то это — родной язык и английский язык. Все. Больше ничего не нужно.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Harald

В обработке изображений тоже комплéксные числа применяются (всякие там Фурье…).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от power

Есть же такие вещи, без знания которых невозможно обойтись: циклы, ветвления, простые структуры данных?

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

Zhbert ★★★★★
()
Ответ на: комментарий от fero

АК- простейший механизм, преобразующий стек в очередь

Черт, да. Я с этой точки зрения никогда не смотрел на АК =) А макарыч тогда механизм, делающий это пошагово с точками сотанова, дебаггер АК, получается =)

Zhbert ★★★★★
()

ЧАСТИЧНО СПЕЦИАЛИЗИРОВАННЫЙ ШАБЛОН BOOST ЛЯМБДЫ СИНТАКСИЧЕСКИЕ МАКРОСЫ ХВОСТОВАЯ РЕКУРСИЯ ЛЕНИВЫЕ ПРОДОЛЖЕНИЯ MAPREDUCE В ТЕРМИНАХ ФУНКТОРНЫХ БАЗИСОВ СУПЕРКОМПИЛЯЦИЯ КОПРЕДЕЛЫ КАТЕГОРИИ ЭНДОФУНКТОРОВ ТОПОСЫ ТОПОСЫ

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

кватернионы в компьютерной графике вполне нашли применение.

Я в курсе, спасибо. Смысл моего сообщения был в том, что в «теорминимум» должен входить теорминимум, а не все возможные приложения. А то так можно договориться и до познаний в базисах Гребнера или групп Ли.

unanimous ★★★★★
()

«английский язык», «ну там уметь быстро разобраться в чем-то новом», «пользоваться гуглом»

Именно это и требуется для успешного проекта. Особенно первое - не ниже FCE (примерно IELTS 6.5 .. 7.0)

Ну, добавлю от себя, еще сертификат по Джаве от Оракла.

А «титиретики»-кульхацкеры с их понтами не нужны. Нужны усидчивые и работящие.

Что такое технический вуз нынче? Это место, где теоретики, не востребованные на реальном производстве, воспитывают теоретиков с нулевыми практическими знаниями.

Впрочем, Алан Голуб изложил все лучше меня в своих «Правилах программирования».

Bioreactor ★★★★★
()

«думать», уже ответили.

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

hobbit ★★★★★
()

чьорд, это должно было быть в первом посте (ну или во втором)

shty ★★★★★
()
Ответ на: комментарий от aedeph_

Это должно было тебя навести на некоторые мыслм.

Ты давай, давай, не прикрывайся загадочностью. Мне интересно, что я должен узнать о теорминимуме.

Похоже безуспешно.

Ну зачем же сливать раньше, чем я успел насладиться фейлом?

unanimous ★★★★★
()
Ответ на: комментарий от Zhbert

Мертвый программист тоже программист.

Биопроблемы. Программист может быть и роботом.

power
() автор топика
Ответ на: комментарий от buddhist

Я ни у кого ничего не занимал.

Остроумие явно у Евгения Ваганыча одолжил.

power
() автор топика
Ответ на: комментарий от Bioreactor

Нужны усидчивые и работящие.

Это больше к работоспособности относится. Ты еще напиши про «коммуникабельность», «стрессоуйстойчивость» и «обучаемость» ;)

power
() автор топика
Ответ на: комментарий от metar

Какое из этих знаний ты счел бесполезным, интересно-вот?

Автомата Калашникова нужен не программистам, а полугопникам-посетителям форумов о программировании. Где они будут трясти воображаемым автоматом, травя байки о том что скоро придут нато с китайцами, и рассказывать о том что мировой заговор скоро подберется к их запасам тушонки в подвале.

kernel ★★☆
()
Ответ на: комментарий от Eddy_Em

Мат. анализ, численные методы, мат. физика, линейная алгебра, ТФКП…

Эти знания не программистам, а посетителям форомув для выпускников россияносоветских вузов. Где они будут трясти этими страшными словами обосновывая величие россияносоветской системы ВО. :D

kernel ★★☆
()
Ответ на: комментарий от Norgat

Именно поэтому из университетов частенько выходят девочки краснодипломницы(со специальностей с упром на программирование), которые программировать не умеют толком. А почему? Потому что они не программировали, хотя исправно учили лекции, вот только это не даёт эффекта.

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

x-signal ★★
()
Ответ на: комментарий от Norgat

которые программировать не умеют толком. А почему? Потому что они не программировали

Это если сказать что я не чемпион мира по боксу в тяжелом весе потому что я не ходил на бокс.
Ты действительно веришь что их можно было бы научить программировать?

urxvt ★★★★★
()
Последнее исправление: urxvt (всего исправлений: 1)
Ответ на: комментарий от urxvt

Почему именно чемпион? Тут было какое-то условие на то, что нужно быть лучшим в мире программистом?

Ты не боксер, потому что ты не ходил на бокс. Все верно же.

rival ★★
()
Ответ на: комментарий от nCdy

Это уже (возможная) причина того, почему он не ходил.

rival ★★
()
Ответ на: комментарий от nCdy

Неужели? А если только махать руками перед зеркалом, то наверное еще и драться нельзя научиться?

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

Ты не боксер, потому что ты не ходил на бокс. Все верно же.

Про тяжелый вес ты сознательно опустил?
Смысл моего сравнения в том что как в тяжелом боксе нужны определенные врожденные физические данные так и в программировании нужно наличие чего-то плотней воздуха в голове.
У нас на потоке было 7 дам, почти все школьные медалистки, и вроде с не дурной головой. Но я готов поспорить на что угодно что программировать их не обучить (до более-менее приемлемого уровня) никогда.

urxvt ★★★★★
()
Ответ на: комментарий от power

В геймдеве все это понадобится

Это иллюзия. Вызванная тем что россиянский гемдев это и есть выпускники технических вузов у которых все это есть. Тут не образование под производство, а наоборот - производство лепят под ту структуру образования что есть и те хилые организационные способности что в наличии.

Во первых, не в геймдеве а в очень отдельных его областях. Во вторых геймдев просто физиков нанимает, если «всего этого» надо много. Не надо пытаться записывать любую случайную специальность в программисты. И да, эдди просто перечислил то что дают физикам (и в урезанной форме инженерам) в россияносоветской вышке. И сделал он так потому что он долбанный физик и давно тронулся рассудком. :D

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

kernel ★★☆
()
Ответ на: комментарий от x-signal

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

Придумывание новых алгоритмов (см. «новый, не имеющий аналогов, алгоритм сортировки») это задача не программистов а CS - computer science. Просто в связи с тем что CS тут нету - это все записали в список того что делает «программист», вместе с переустановить венду в бухгалтерии.

kernel ★★☆
()
Ответ на: комментарий от urxvt

Но я готов поспорить на что угодно что программировать их не обучить (до более-менее приемлемого уровня) никогда.

Я готов поспорить что их можно обучить (до более-менее приемлемого уровня) очень легко - при наличии у них мотивации научится программированию и правильных преподавателей.

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

kernel ★★☆
()
Ответ на: комментарий от x-signal

Я имел ввиду не новые алгоритмы сортировки, а алгоритмы решения новой задачи.

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

kernel ★★☆
()
Ответ на: комментарий от x-signal

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

Более того «программирование» (не Computer Science) вообще инженерная, а не научная специальность, где наду уметь комбинировать готовые решения и уметь формально проверять их на работоспособность. Творчества тут вообще мало, интеллекта — тоже. Что, в общем-то косвенно доказывается, что почти любой дебил хоть как-то да «программирует».

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

Творчества тут вообще мало, интеллекта — тоже.

В программировании ядра Linux мало творчества и интеллекта?

x-signal ★★
()
Ответ на: комментарий от x-signal

Создание действительно новых алгоритмов, да ещё и востребованных, уверен, редкость, и как подчеркнули выше - CS. На практике под

алгоритмы решения новой задачи

я понимаю нахождение действительно подходящего алгоритма, комбинацию существующих или адаптирование существующего.

gag ★★★★★
()
Ответ на: комментарий от kernel

тренированный матаном мозг, что бы «разрабатывать алгоритмы» по ведению учета зарплат в адынэс

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

x-signal ★★
()
Ответ на: комментарий от x-signal

В программировании ядра Linux мало творчества и интеллекта?

Ну в общем-то, да. Достаточно взглянуть на объем кода, связанный с драйверами.

unanimous ★★★★★
()
Ответ на: комментарий от urxvt

Про тяжелый вес ты сознательно опустил?

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

в тяжелом боксе нужны определенные врожденные физические данные

Разумеется врожденные способности могут давать какие-то плюшки или наоборот минусы, но мы тут не за звание «чемпиона по программированию в тяжелом весе^W^W^Wна опкодах» боремся.

Но я готов поспорить на что угодно что программировать их не обучить (до более-менее приемлемого уровня) никогда.

Ты готов так же поспорить, что это именно из-за врожденных способностей, а не из-за чего-то еще (например, отсутствия мотивации и интереса)? Как ты это собрался доказывать?

rival ★★
()
Ответ на: комментарий от gag

алгоритмы решения новой задачи

я понимаю нахождение действительно подходящего алгоритма, комбинацию существующих или адаптирование существующего

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

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