LINUX.ORG.RU

Путь в программирование

 , , ,


4

6

Цель следующая: необходимо стать толковым программистом. Веб мне не нравится (от слова «совсем»). Хочу освоить нужные инструменты (языки) для программирования. Планирую писать десктопные программы, кроссплатформенные (клиентские), мобильные приложения тоже можно. Реже — драйверы или прошивки. Никогда раньше не занимался программированием (ну, если не считать qbasic в школе, который давным давно полностью забыт).

С чего стоит начать? Я нашёл информацию по этому вопросу, прочитал не одну тему по этому поводу. Верно ли я определил дальнейшие действия? Гуру, подскажите. Есть огромное желание и интерес к программированию. Получится что-то толковое, если учиться по списку ниже, который я подобрал?
Сильно не ругайте, ибо не специалист.

1. Изучить алгебру логики, комбинаторику, позиционные системы счисления, теорию вычислимости и теорию алгоритмов, принципы построения и функционирования вычислительных систем.
2. Изучение алгоритмов (чтение «Алгоритмы. Руководство по разработке» Скиена, «Алгоритмы и структуры данных» Вирта, «Алгоритмы: построение и анализ» Кормена).
3. Чтение «Программирование: введение в профессию» Столярова.
4. Написание простеньких программ на Basic, изучение Assembler.
5. Изучение и программирование на Pascal.
6. Чтение Стивена Прата «Язык программирования C. Лекции и упражнения», K&R.
7. Изучение и программирование на C.
8. Чтение «Введение в функциональное программирование» Харрисона, «Типы в языках программирования» Пирса, SICP, GNU Emacs Lisp Reference Manual.
9. Изучение и программирование на Scheme.
10. Чтение «Java SE 8. Базовый курс» Хорстманна, «Программирование на Java» Якова Файна, «Изучаем Java на примерах и задачах» Сеттера.
11. Изучение и программирование на Java.
12. Реальная работа в проекте (набор опыта), потом джуниором ~ 1.5 года.

Может ли такой план сработать? Что поправить? Чего добавить/убрать?
Спасибо за внимание.



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

Есть, даже в ЕГЭ вроде, там где начала теории вероятности или что-то такое, там без размещений и сочетаний никак.

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

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

alpha ★★★★★
()

Нелюбовь к вебу проходит.

Жжение от веб-технологий - нет.

Свыкнешься.

Deleted
()

Java
Веб мне не нравится (от слова «совсем»)

Тогда должно быть нравится под мобилки клепать, иначе разочарую - писать на ней для десктопа - то еще занятие, а для серверной части в 80% будет связано с вебом, возможно косвенно

Dred ★★★★★
()

Изучить алгебру логики, комбинаторику, позиционные системы счисления, теорию вычислимости и теорию алгоритмов, принципы построения и функционирования вычислительных систем.

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

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

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

Ага, а после такой «комбинаторики» вот такие вопросы возникают Ищу алгоритм генерации всех сочетаний элементов списка

В итоге оказалось, что это абсолютно бесполезно.

У меня порядка 70-и элементов в списке, ака 1000050000 комбинаций. Проверка каждой комбинации занимает пару минут. В итоге мне нужно 100 лет, чтобы всё проверить...

4 дня потратил

ZERG ★★★★★
()
Ответ на: комментарий от no-such-file

Проблема в том, что в реальном мире шанс того, что «я у мамки программисту» будут платить зарплату крайне мал. Он просто не сможет устроиться на работу по специальности. Ну и ЗП не объективный механизм оценки труда, знаю одного программиста, не самого плохого, но и не очень хорошего, который сидит на ЗП в 5k$ в месяц, имея 8 часовой рабочий день и ходящего на работу на 6-7 часов (опаздывает и рано уходит), но работает он на своего братана, так что ему по барабану, вот и вся объективность оценки труда.

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

У меня до сих пор не прошла нелюбовь к жжению от веб-технологий.

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

вот и вся объективность оценки труда.

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

system-root ★★★★★
()

Хороший план. Пункты 1 и 2 изучать не последовательно, а параллельно с остальными. Basic можно вычеркнуть, ассемблер лучше после паскаля. Где-то после Scheme будет полезно обзорное знакомство с прологом, хаскелем, Rust-ом. Ещё обязательно изучить реляционные СУБД и SQL. Ещё очень желательно обзорно изучить современный веб.

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

возможно содискурсант подразумевает что на заокраенном_западе непотизмы наличие отсутствия и только в дикой квадратной вся провинция страна.

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

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

полезно листануть академические какой нить научпоп по антропологии+социологии+политике

Извиняй, но тут всё просто очень, листать нечего. Листать это надо лишь если хочется рассказывать красивые/популярные/одобряемые обществом и сильными мира сего сказки.

peregrine ★★★★★
()

Вот что на самом деле важно и нужно

1. Алгоритмы (функции, итеративные, рекурсивные, параллельные; сортировки, обхода графов, построение деревьев - АТД, абстрактные типы данных; комбинаторика).

2. Языки программирования, где наилучшим образом реализован тот или иной аспект. Учить необязательно, главное это знать. Догонишь на реальных задачах.

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

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

прелесть современности в том числе в том что если простецам не срёшь в уши о гелиоцентризме и чисто так «для себя» публикуешься никто от тебя отречения от еретических взглядов не потребует.

ибо утопить в инфо-шуме оказалось эффективней чем преследовать конкретный текст.

исходя из предшествующего абзаца очевидно зачем кой чего и запрещенно.

вообще см. Билет на планету Траннай Шекли.

--------------------------

и если всё так просто то не было почвы для реплики на которую ты с таким превосходством отреагировал.

ззы. различай буквари от текстбуков, а последнии от монографий.

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

Я о том, что все гуманитарные науки, которые не имеют под собой статистики даже не столько политизированы (это тема для отдельного разговора), сколько основаны на распространенных и типичных для людей заблуждениях и мифах, вроде справедливости, добра, зла и прочих глупых и бессмысленных терминов, которыми мы пользуемся и при этом даже как-то понимаем друг друга. Короче, из наук, изучающих человека рулят только биология и психология, но в последней очень (слишком) много неточностей и непонятных мест. А остальные науки не далеко ушли от философии. Взять ту же социологию, которая берет объектом изучения социум. Наука в ней кончается там, где начинается анализ результатов математической статистики. Остальное строится на домыслах и допущениях. Как к этому можно относиться серьёзно, я ХЗ. На занимательное чтиво потянет, конечно, но не более того.

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

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

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

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

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

Реальность

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

peregrine ★★★★★
()

Из собственного опыта:

1. Английский язык. Без вариантов. Оригинальной информации на русском практически нет. Всё остальное запаздывает и искажено.

2. Системный/или платформенный ABI, режимы работы компилятора, языковой рантайм (в твоём случае JVM), стандартная библиотека, «распространённые» библиотеки или фреймворки. Ибо, преобразование исходных текстов в низкоуровневое представление это далеко не самая важная и даже побочная задача компилятора ;)

3. Работа по специальности. Не бойся! В конторах есть масса «дежурных» вакансий, специально для тебя. Туда примут кого угодно, хоть с дипломом пекаря. Работа, кончено, — дерьмо и зарплата так себе. Но в тебе ли привередничать?

4. Собеседование — процесс обоюдный: не стесняйся распрашивать о конторе, проекте, клиентах, условиях труда, говорить с будущими коллегами, смотреть код проекта. В конце-концов это *тебе* просиживать по 12 часов на первых порах.

5. Не дай запугать себя всякой хернёй! Держи и не выпускай из головы: если бы контора была оснащена штатом *настоящих* профессионалов, хрен бы они *твою* вакансию даже рассматривали бы. Но, конечно, это не повод вести себя некорректно.

6. Пункты с 1-го по 11-й включительно выкинь из головы. И первую половину 12-го тоже. Думаешь тебе дадут *писать*? Гы-гы-гы! Уж кого-кого, а *писателей* хватает. А вот специалистов как раз не хватает.

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

На улицу давно выходил, многосмысленный технарь?

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

вот и вся объективность оценки труда

Ну дык, труд это не просто работа. Он всё остальное время трудится, поддерживая с братом хорошие отношения. Бесплатно ничего не бывает.

no-such-file ★★★★★
()
Ответ на: комментарий от peregrine

Дурацкая рекомендация, как и ваш пассаж на тему гуманитарных наук.

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

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

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

смотреть код проекта

Кто в здравом уме Васю с улицы к коду подпустит, пока он NDA не подпишет?

А про английский всё правильно.

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

Кто в здравом уме Васю с улицы к коду подпустит, пока он NDA не подпишет?

Ы-ы-ы-ы! Я вас умоля-я-я-яю! Один только факт нежелания рассказывать о предстоящем фронте работ должен настраивать на определённые мысли. Особенно под соусом «NDA».

В любом случае — даже если ты супер-профи — на время испытательного срока будет выделен некий товарищ-наставник. В некоторых конторах — официально, в некоторых не — очень. Очень неплохо подговорить ним (ней, гы-гы-гы) ещё *до*, на этом берегу, в приватной обстановке.

В случае ТС, он скорее всего, станет «юным падаваном». Ему со своим будущим «мастером-джедаем» поговорить просто необходимо.

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

Отказ предоставить оный, должен наводить определённые мысли о сути (tm) сей конторы.

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

https://ebanoe.it/2017/04/13/12-yo-programmer/

Что там? Опять напугали уеб-дивилоперов математикой?

ПО реализовывалось на Python 3, использовалась библиотека TensorFlow.

Что тут не понятного? Сейчас все эти супер-пупир алгоритмы клепаются мышкой, так же как на Делфе. Скопипастил примеры, подогнал под похожую задачу и готово. Баззвордов он в ютубе и вконтакте нахватался. Как и все дети тупо копирует взрослых.

Раньше были юные «хакеры», взламывающие пентагон. Сейчас юные «дата сайнтисты». Ничего нового.

Математика - это еще более жуткий быдлокод, который даже не запускается. В программровании все намного лучше.

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

«Первую тысячу лет сложно, потом привыкаешь.» ©

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

Фронт работ тебе озвучат сразу. В общих чертах и со стеком технологий. Может даже кусочек кода покажут для примера, чего от тебя ждут. А чтобы в проект (основной, а не опенсорсный придаток к основному) пускать без заключения официального договора с NDA, я не видел таких.

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

Я думал дискретка - это преобразование фурье.

У меня какая-то другая дискретка была, автоматы мура, мили, конъюнкция/дизъюнкция, минимизация покрытий, таблицы переходов и все это было применимо только к ПЛМ. Потому когда слышу, что программисту нужна дискретка, даже смешно, только разве для общего развития, типа для повышения эрудиции но не как не для очередного энтерпрайзного crud да и даже не для системщика, чем она поможет в разработке ПО?

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

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

Ты меня неправильно понял: не «пускать», а «посмотреть» в процессе или по итогам собеседования.

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

Потому когда слышу, что программисту нужна дискретка

Ну «дискретка» это, в принципе, и теория графов, теория автоматов и, соответственно, языков и вычислений/вычислимости. Та же книга Хопкрофта (хотя он старательно избегает понятие «множество» и это ему неплохо удаётся) относится к «дискретке».

Каждый вуз и каждый аффтар вкладывает в это понятие разные вещи.

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

А остальные науки не далеко ушли от философии.

Почему-то в некоторых странах запада, исключительно высокообразованным людям присуждают почетное звание Доктор Философии.

pru-mike ★★
()

По теме

Есть огромное желание и интерес к программированию.

запишись на курсы

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

присуждают почетное звание Доктор Философии

Присуждать можно что угодно.

peregrine ★★★★★
()

Есть огромное желание и интерес к программированию.

Это самое главное!

План хорош, только провальный.

Смотри с точки зрения работодателя. Будущий твой работодатель, разу уж он тебя взял, искал не очень компетентного программиста, ну а какой может быть программист с нулевым опытом? Денег будет платить мало, потому что риски, боится он (работодатель) что новый человек ненадежен, всегда может все испортить и завалить, одного его на проекте оставить нельзя. А может и в запой уйдет после первой з/п (бывают странные люди). Так что тебе главное интервью пройти, но перед этим нужно найти тех кто тебя на интервью позовет. Программеру с 0 годами опыта нужно что-то показать, например код. На интервью будут спрашивать про структуры данных (массивы, связанные списки, карты, стек и очередь) и про язык. Последний очень важен, иначе тебя могут быстро отсечь на техническом интервью люди с которыми тебе предстоит работать, никто не хочет в рабочее время рассказывать азбуку. Потому знать один язык, но хорошо, а не десять но по чуть-чуть. Все.

Aber ★★★★★
()

Вот эти два пункта, остальное можешь выкинуть:

6. Чтение Стивена Прата «Язык программирования C. Лекции и упражнения», K&R.
7. Изучение и программирование на C.

Качать до уровня проектов в 2к строк. Нужно для понимания «как это работает» на низком уровне, чтоб потом не лепить косяков типа вызова функции в условии.

Далее уже смотришь себе специализацию: системщина — качаешь дальше си плюс какую-нибудь скриптоту; embedded — то же самое + asm; прикладное ПО — python/perl/c++; gui — c+gtk/c++/qt/python+биндинги; ынтерпрайз - почти наверняка жаба; телеком - ерланг.

Гейдев — отдельная тема. Та же сишечка, плюсы, как правило lua, opengl.

Веб — тоже вообще отдельная тема. Фронтенд сейчас зохвачен вебмакаками и пишется копипастом со стаковерфлоу. «Программирование» как таковое там осталось только в написании бакенда (и не на похапе). И то норовят воткнуть ноду и нанять тех же самых обезьян за доширак.

9. Изучение и программирование на Scheme

Оставь борещхлёбам борщехлёбово. IRL оно тебе пригодится чуть реже чем никогда.

3. Чтение «Программирование: введение в профессию» Столярова.
5. Изучение и программирование на Pascal.

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

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

Кнут ещё больший неадекват вебмакакам и прочим кодерочкам. при всех экцентриситетах Столярова книжки у него всёж от среднего уровня отличаются ибо кроко какой никакой но прогер-преп , а не «кто не умеет тот учит»

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

также возможно симптом преклонения перед амер cs и презрения к европейской informatica .

зы. ща при во всё более потребительско-ориентированной системе оказания образовательных услуг пацкалем(впрочем как теми же Си и python) мало где(почти нигде) обучают правильно(в смысле вооплощения в сознании и не только обучаемого нужных «моделей») так что слава самородкам и талантам.

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

Я думал дискретка - это преобразование фурье

Нет, дискретка - это «задача коммивояжёра» и прочие «семь мостов».

преобразование фурье

Это матан.

no-such-file ★★★★★
()
Ответ на: комментарий от menangen

дискретка

Имхо под дискреткой подают кучу разных областей, которые однозначно не засунешь в «непрерывную» математику.

преобразование фурье

это матан

если его хрен вычислишь на проце, поэтому синус раскладывают на миллион мелких отрезков

Это больше вычислительная математика либо ЦОС.

grimwaken
()

Многое зависит от возраста. Если человек даже не в старших классах, то при нормальной усидчивости он может въехать в олимпиады по алгоритмам, программы Google для школоты, топ-вуз и потом куда угодно. Если же человеку лет 30, то можно посоветовать лишь машину времени - не будет же адекватный взрослый человек по вечерам учить вордпресс и соревноваться на фрилансе с жадными школьниками за заказ на настройку кнопки.

ТС, какой у вас возраст?

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

что адекватный взрослый человек делает по вечерам по твоему мнению?

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

В жизни всего два пути: расти, либо деградировать. Если перестаешь учиться - начинаешь деградировать. Меньше всего нужно смотреть на ссаный биомусор, который считает, что после школы/универа им осатется только втыкать в зомбоящик и бухать после работы. Увы, таких большинство, но это не значит, что нужно поступать так же.

anonymous
()

Может ли такой план сработать? Что поправить? Чего добавить/убрать?

Не забудь добавить историю древнего мира, философию, изучение древнегреческого и латинского языков, изучение литературы... Сарказм же.

Планирую писать десктопные программы, кроссплатформенные (клиентские), мобильные приложения тоже можно. Реже — драйверы или прошивки.

Слишком большой круг задач. Выбери что-то одно и разберись в этом.

Пункт 1 не нужен. Пункт номер 2 - это решение задач, которые надо решить просто чтоб знать как это работает. 3 - что это? 4, 5 - зачем ассемблер, зачем бейсик(навернякак устаревший), зачем паскаль? 6, 7 си немного знать надо, чтоб представлять как работает на низком уровне. 8, 9 функциональные языки это конечно хорошо, но от того что ты сможешь без гугла поздороваться с миром на 20 языка умнее не станешь. 10, 11 - а тебе нужна жаба? 12 опыт можно получить если просто писать для себя.

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