Двощ, я окончательно понял, что мое образование в универчике, куда меня запихнула мамка, не даст мне будущего. Я понял, что хочу быть программистом. Есть огромное желание трудиться днем и ночью, чтоб через какое-то время получать хорошие бабки, не завися от курса валют (особенно при нынешней ситуации это очень полезно), имея возможность работать где угодно и имея широкие перспективы. О том, что первое время придется работать за копейки и нарабатывать опыт, я в курсе. Призываю в тред опытных программеров, а также дизайнеров и прочих. Как долго мне придется с нуля идти к успеху? Какие возможности есть у меня сейчас? С чего лучше начинать?
А я вот хуй знает куда идти. 1с разработка или в серьезные языки. 1с пиздат тем что легко, много денег и в фирму пристроить могут. Но только на территории нашей страны и ближайшего снг. Т.е. и зарплата только в рублях и трактор хуй заведешь.
Модуль первый, введение. Задача: получить мотивацию и базовые знания, которые потребуются для освоения дальнейшего материала. Матчасть: информатика, программирование на языках высокого уровня, базовые понятия программирования: итерации, рекурсия, процедуры, функции, абстракции, классы, объекты, методы, переменные, присваивание, замещение, цикл, ветвление. Вначале советую читать SICP. Не весь. Вычисления на регистровых машинах можно отложить на потом. Нужно понять и прочувствовать принципы работы схемы (язык программирования, который используется в этой книге): это простой и одновременно мощный язык. Поначалу будет сложно, так как схема не похожа на бейсик, паскаль или что вы там изучали в школе. Но если вам удастся ухватиться по крайней мере за половину того, что написано в SICPе дальше будет легко и приятно. Писать на схеме сложные приложения невозможно. Это чисто учебный язык и вы никогда не будете его использовать на практике. Поэтому далее надо выучить кое-что посерьёзнее. Обычно первокурсники в России изучают язык си. Это не очень плохая идея в той части, что большинство языков имеют си-подобный синтаксис. В части байтоебли и плохого ООП на крестах (так я буду называть язык C++) это плохая идея. Поэтому откройте толстенный учебник Дейтелов и хорошенько изучите его ровно до конца шестой главы. Это где-то 1/3 часть учебника. Дальше можете не читать, так как рискуете навсегда испортить себе вкус указателями. Но можете и прочитать. На си можно писать сложные программы, но так тоже никто не делает. Поэтому большинство программ из курса я рекомендую писать на Java и Python Отвечаю на недовольный гул в аудитории: Java потому, что java легче. Изучая что-то другое на этом этапе, вы просто запутаетесь в особенностях языка. Особенно это касается шарпа (хотя на нём можно писать, как на джаве, только вот ведь не захочется), крестов (там сложно не запутаться) и хаскелл. Python потому, что некоторые задачи легче решать на скриптовом языке. Кроме того, в питоне есть некое подобие функциональщины, и если рано припечёт, то можно будет посмотреть и её. Хорошо ориентируясь в этих языках (на это не нужно слишком много времени – это не кресты, которые нужно учить годами) можно потом достаточно быстро изучить другие языки. А можно и не изучать, так как оба этих языка (в сущности, плохих) широко применяются до сих пор. Не заморачивайтесь на IDE, компиляторах и прочем инструментарии: вы всё равно перепробуете все доступные. Не дожидайтесь, пока вас заебёт первая рекомендованная среда, а сразу поставьте все распространённые и выберите понравившуюся. Книги: Философия Java Эккеля, читать по мере необходимости. Не занимайтесь особым оверинжинирингом. По крайней мере многопоточность следует отложить до лучших времён. Не забивайте себе голову паттернами. Книга номер два - в глубь языка Python. Кстати, я знаю, как пишется «вглубь», просто использую русский перевод с официального сайта. Опять же – изучайте разделы по мере необходимости. Сомневаюсь, что тёлки будут течь при одном упоминании каких-то ваших характеристик, но изучить основы этого языка можно очень быстро. Кроме того, попробуйте почитать «Конкретную математику». Пока не станет скучно. Я рассчитываю, что скучно станет весьма быстро, хотя книга (как и TACP Кнута) написана с характерным юморком. Асимптотику лучше отложить до алгоритмов. Если чувствуете, что идёт совсем плохо (не Кнут с Паташником, а вообще), то читайте школьные учебники. Лучше старые, советские. Можно почитать книги для совсем маленьких детей «А я был в компьютерном городе», «Занимательная информатика» и.т.п. – это просто весело. Вам должно быть интересно читать. Если на этом этапе вам скучно, то дальше будет вообще кромешный непролазный пиздец. Ещё не поздно пойти писать гостевуху. Да, это была самая сложная часть. Если вынести из неё ещё и знание английского, то всё остальное покажется лёгкой прогулкой. Практика: из всех учебников, которые я перечислил, задачи есть только в SICP'е и Дейтелах (ну и в конкретной математике, конечно). Их нужно решать. Освойте все простые конструкции, напишите несколько несложных игр, для одной из них напишите ИИ. Порешайте задачи для школьников, которые просят сделать за них лабу в /pr/ - но обязательно пишите на другом языке. Писать игры на джаве удобно, используюя LWJGL. Игры – сапёр, ним, пакман, "зенитка". Для пакмана может не хватить алгоритмической базы. Не заморачивайтесь, ваша задача – освоить стандартные библиотеки.
Теперь можно перейти к дискретной математике. Задача: понимать язык, на котором написаны остальные книги. Нет, это не самый занудный раздел. Теория трансляции будет зануднее. Матчасть: Открываете любой учебник, в котором есть: множества, алгебры, отображения, графы. Хорошо подойдут университетские методички. Можете видеокурсы с интуита посмотреть. Учите. Плюс нужна элементарная матлогика – кванторы, законы де Моргана, таблицы истинности. Семиотику пока трогать не надо. Практика: Выполняете задания. Доказываете теоремы. Надеюсь, дедушка Кнут научил вас, что доказывать теоремы – это весело. Найдите себе товарища, доказывайте вместе. Это развивает мышление. Традиционно далее изучаются базы данных. Базы данных есть в любом мало-мальски сложном приложении. Даже в компьютерных играх есть. Даже в ссаных гостевухах, которые сейчас пишут оставившие нас несколько абзацев назад «коллеги». Поэтому базы данных надо знать. Сейчас используются исключительно реляционные базы данных. Некоторые люди поговаривают про key-value хранилища (непременно асинхронные и сверхбыстрые), ну так вот, они концептуально тоже реляционные. Но вы с ними обязательно разберитесь отдельно. Матчасть: идёте по учебнику Кристофера Дейта и изучаете темы. Идти до конца не надо: читайте выборочно и смело бросайте около 17 главы. Изучить надо реляционное исчисление, ER-модель, транзакции, SQL. SQL лучше изучать не по Дейту, а по какому-нибудь практическому учебнику – обратите внимание на книжку Моисеева и его сайт с задачами. Практика: проектировать базы данных. Быстро. В уме. Таблицы должны интуитивно получаться сразу в 3NF. Пишите запросы на сайте у Моисеенко. Напишите приложение, которое активно использует базу данных – многим студентам такое барахло нужно на курсачи и дипломы, можно даже найти заказчика за деньги. Посмотрите на ORM (SQLAlchemy, Hibernate и.т.п.), почитайте статейки. Узнайте, какие сейчас используются базы данных, и обязательно прикрутите парочку к своим приложениям. Было бы здорово сделать что-нибудь с ORM.
>>82078219 Сети. Задача – научиться писать сетевые приложения. Матчасть: Таненабум наш друг и товарищ на все времена. Осиливайте модель OSI, читайте спецификации нескольких сетевых протоколов. Например, http и smtp. Особенно http – разберись с хедерами, сжатием и.т.п. Долго и хорошо почитайте в Википедии про современные системы свзяи. Посмотрите алгоритмы, которые используются в маршрутизации, разберись, чем пакет отличается от кадра. Практика: делаем сокет-сервер, например, для чата. Разберитесь с XML, HTML, JSON. XML особенно. Освойте XPath. Теперь вы должны немного разбираться в вебе. Не так, как ваши товарищи, которые набивали шишки, но для закрепления знаний HTML вполне можно написать небольшой имиджборд. Если вам понравится – можно покинуть курс сейчас, так как начинается хардкорная computer science. На работу в веб вас возьмут после двух-трёх недель хорошей практики. Архитектура ЭВМ. Задача: знать, как работает компьютер. Дабы не делать ляпов. По крайней мере, глупых ляпов. Матчасть: Читаете Таненбаума, про архитектуру ЭВМ. Лёгкое и интересное чтиво. Знать: что такое вентиль, что из них составляют: там очень подробно описано по разделам. Не путаться в шинах. Знать про адресацию памяти, прерывания. Практика: Спроектировать простейший "железный" компьютер из блоков. На бумажке. Чтобы выполнял программу, записанную в память. Спроектировать всякой хуйни в эмуляторе схем. Дешифратор для семисегментного индикатора, например. Ассемблер лучше особо не трогайте, познакомишься с ним для интересу у Кнута, а писать на нём вам всё равно не придётся. Во всяком случае, я до сих пор я пытался оградить вас от низкоуровневого программирования. Знаний там очень много, но они все совсем не фундаментальные и изучать их надо под конкретную должность. Начните читать Кнута, по крайней мере, разберитесь с его компьютерами (MIX и MMIX) и напишите для них несколько программ на бумажке. Сделайте свой виртуальный компьютер, но не такой старый и сложный, как у Кнута. Сделайте для него ассемблер и напишите пару простых программ.
Операционные системы. Задача состоит не столько в изучении операционных систем, сколько в изучении принципов распределения ресурсов компьютера. Тут же надо разобраться с многозадачностью, которую я вам как-то отсоветовал изучать сразу. Матчасть: опять же Таненбаум. Разберитесь с алгоритмами для планирования процессов, организацией памяти, файловыми системами, ядрами. Есть толстенный учебник Дейтелов. Помните, вы по ним си изучали? Так вот, ещё есть и по ОС учебник. Отдельно изучаете многозадачность: синхронизацию, пайпы, семафоры, мониторы. В жабе всё это дело есть из коробки и писать программы, которые реализуют такую функциональность будет просто и приятно. Если вы бросили Эккеля на этом месте – самое время начать читать опять. Одного Эккеля мало, используйте гугл. Хотя, наверное, к этому времени вы уже сменили язык. Практика: многопоточные приложения. Сделайте свой компьютер многопоточным. Это весьма занимательно. Сделайте сегментную организацию памяти и поковыряйте методы адресации. Возможно, придётся переписать с нуля. С этого раздела байтоебля, коей в нашем курсе было очень мало, официально заканчивается. Теперь вы примерно знаете, что это такое. Наконец переходим к алгоритмам. Задача: понимать, как оценивается скорость алгоритма, почему существует много алгоритмов, как выбрать нужный. Знать базовые алгоритмы. Знать структуры данных и связанные с ними алгоритмы. Хорошо знать! Их много самых разных, со многими вы уже познакомились, когда изучали свои первые языки. Всякие связные списки из массивов вы должны уметь реализовывать стоя у доски с маркером. Это хороший тон. Книги: Вирт, Ахо по алгоритмам и структурам данных. Вот тут читать надо всё, очень пригодится дискретка. Опять же, Кормен. Там очень много материала, разбирайтесь в нём постепенно. Можно вернуться к конкретной математике, раз уж вы её бросили. Практика: реализуйте алгоритмы, про которые читаете. Вряд ли в реальном мире вы будете использовать их в чистом виде, однако вы должны знать хорошие решения. Теперь можно писать гораздо более сложные ИИ для игр, которые вы когда-то создали для тренировки. Напишите классический алгоритм поиска монстрами Пакмана, например. Если хватит терпения реализовать всякие поиски – снимаю шляпу. Да, эта бодяга надолго. Изучайте параллельно что-нибудь ещё, следующие разделы лёгкие и богатые на практику. Нельзя позволить себе растерять мотивацию.
Формальные языки и методы трансляции. Да, вот она вершина, с которой видно весь остальной курс. Если вы досюда добрались, то у вас железные яйца. Жму руку. Хотя и написано, что теория трансляции, надо обратить внимание на синтаксически управляемую обработку данных вообще. Матчасть: начинаем разогрев с главы учебника по дискретке про семиотику. Продолжаем Ахо и Сети, Книгой Дракона. Введение по дискретке там есть, но бедное. Нужно осилить грамматики, языки, иерархию Хомского и соответствующие автоматы. Кстати, автоматы в конце SICPа есть. Изучаем работу компиляторов и интерпретаторов. Изучаем оптимизации. Отдельно про регулярные выражения. Что такое регулярное выражения вы поймёте при изучении иерархии Хомского. Но регулярные выражения – это уже прикладная область, и чтобы их составлять нужно быть знакомым с синтаксисом, обозначениями и.т.п. – учебник по дискретной математике вам этого не даст. Прочитайте книгу О'Рейли про регулярки. С совами на обложке. Практика: написать несколько сложных регулярок. Затем написать калькулятор. Затем сложный калкулятор. Дипломная работа нашего курса – компилятор или интерпретатор. Да, чёрт подери, настоящий оптимизирующий компилятор простого языка. Подумайте, насколько вы стали круче с момента, когда отказались писать гостевухи. Стандарты в программировании: всё самое сложное вы уже осилили, осталась сущая малость. Во-первых, стили разработки. Юнит-тесты, UML, рефакторинг, всякие совершенные коды. Модный набор постоянно меняется, и его надо знать. Следите за форумами. Уже пора изучать язык, на котором будете работать, и изучать классические труды о его устройстве, стандартных библиотеках и методах. Если вас действительно заинтересовали Ахо с Сети, то вы должны многое узнать о языках и выбрать наименее противный. Для прихода к просветлению можно таки выучить модный хачкелл. В книжках, которые я рекомендовал есть моря ссылок на другие труды. У вас уже должен быть большой кругозор. Думаю, к этому времени вы уже знаете, что делать.
Это же бросающих долбоебов тред, я правильно понял? Коротко о последних годах моей жизни. Филфак- поступил на бюджет, наслушался охуенных историй про то, как хорошо быть студентом, находить людей с общими интересами и всякое такое. В итоге ничего из этого не произошло, а я окончательно понял, что между бюджетом и местом, которое интересует, следовало выбирать не бюджет. Бросил спустя семестр. От первого вуза остались воспоминания о том, как я не смог влиться в эту жизнь и тян, которая дропнула меня, пока я лежал в дурке. Да, пришлось месяц лета провести в этом заведении, чтобы было меньше проблем с военкоматом. В сентябре я снова поступил. На этот раз именно туда, куда хотел. Вуз поменялся, студент остался прежним. Я понимаю, что мне нужно образование, но ничего не могу с собой поделать. Могу выучить предмет и выскочить на случайной остановке только чтобы в вуз не идти. И получается, что на предметах, которые я нормально посещаю успеваемость хорошая, а по другим- нули стоят. Я не знаю почему так. Никогда не боялся людей, ну или не боялся их до такой степени. А тут будто стена невидимая и ничего поделать с ней не могу. И, разумеется, все мое общение с близкими свелось к "не бросай вуз". Даже поздравления с днем рождения так же выглядели. Ненавижу себя за все это и что делать не знаю. Проебал вуз, проебал тян, проебал жизнь. Думал уйти на заочное и найти работу. Но. 1 как перейти, если с зачетами полный пиздец 2 меня же даже консультантом в книжный не возьмут, скорее всего. Простите за почерк.
Советую начинать с английского. Потом питон, чтобы хоть что-то вменяемое знать и вообще понимать, что есть программирование. Подрочишь питончика годик и можешь переходить на веб, после питона за пару месяцев научишься и начнёшь фрилансить за еду. Также всё это время надо дрочить инглиш.
Опять вакаба шатается. >>82082511 Английский знаю на уровне, с этим проблем нет. Проблемы есть с математикой, но они решаются как я думаю. >Подрочишь питончика годик и можешь переходить на веб, после питона за пару месяцев научишься и начнёшь фрилансить за еду. Что-то грустно выглядит. Почему так долго? Неужели я при упорном задрачивании не смогу побыстрее научиться?
>>82082511 Ну и кроме того тебе понадобится свободное время, чтобы не перегореть, так что на работку я бы на твоём месте не устраивался, ну или устраивался бы, но только в какой-нибудь макдак или мерчендайзером на полсмены. Ни в коем случае не иди на стандартные 5/2 по 8 часов, так ты нихуя не будешь делать. Так же не иди в ночь - это вообще пиздец и отбивает всякое желание хоть что-то делать. 2/2 или 3/3 такая же хуйня, потому что учиться нужно постоянно, особенно инглиш нужно регулярно дрочить, чтобы привыкать к языку, ну и скорее всего на след. день после работы ты будешь тупо спать до обеда и забивать на всё. Так что или вообще не работай или устраивайся на подработку для студентов за копейки, на инет хватит, а времени свободного полно. Также советую перед началом учёбы попуститься от интернета на пару месяцев и тупо читать книги в жто время, так прокачаешь сосредоточенность и потом уже не будешь постоянно отвлекаться на двач или ещё какую хуйню.
Опять вакаба шатается. >>82082511 Английский знаю на уровне, с этим проблем нет. Проблемы есть с математикой, но они решаются как я думаю. >Подрочишь питончика годик и можешь переходить на веб, после питона за пару месяцев научишься и начнёшь фрилансить за еду. Что-то грустно выглядит. Почему так долго? Неужели я при упорном задрачивании не смогу побыстрее научиться?
Опять вакаба шатается. >>82082511 Английский знаю на уровне, с этим проблем нет. Проблемы есть с математикой, но они решаются как я думаю. >Подрочишь питончика годик и можешь переходить на веб, после питона за пару месяцев научишься и начнёшь фрилансить за еду. Что-то грустно выглядит. Почему так долго? Неужели я при упорном задрачивании не смогу побыстрее научиться?
>>82083297 Я про себя писал, вполне вероятно, что у тебя быстрее получится. Простыня про работу - это тоже мой личный опыт, но я всё не думаю что кто-то в состоянии что-то изучать после рутинной работы 5/2.
>>82083297 Я про себя писал, вполне вероятно, что у тебя быстрее получится. Простыня про работу - это тоже мой личный опыт, но я всё не думаю что кто-то в состоянии что-то изучать после рутинной работы 5/2. Ну и чувака сверху послушай, но начинать с учебных языков не советую, потому что нахуй оно не нужно, питон полностью подходит для новичка, тем более ты фрилансить хочешь, а 90% фриланса - это веб.
>>82076215 >Я понял, что хочу быть программистом Потому, что это модно на двачике. Считаешь, что обладаешь нужным складом ума? Как думаешь, в чем заключается работ программиста? Что лично тебя в ней привлекает.
>в тред опытных программеров, а также дизайнеров и прочих >подразумевает, что это схожие профессии Ну это вообще пиздец, даже объяснять лень.
>>82083830 >>82083271 Я вообще не работаю, так что времени будет достаточно. Работать планирую начать, как только смогу нормально программировать. >>82084289 Почему? >>82084292 С военкоматом уже давно вопрос решен.
>>82083225 Блять, в голос с дауненка. ХАЧУ ЗА ПАРУ МЕСЯЦЫВ НАУЧИТСЯ ПАГРАМИРОВАТЬ И ЗАРАБАТЫВАТЬ ТЫЩИ БАЧИНСКИХ)) АХАХ, А ЧО ТАК ДОЛГО? А ЧЕ БЫСТРЕЕ НЕЛЬЗЯ Я ХОЧУ ФРИЛОНСИТЬ ЗА ДАЛЛАРЫ)
Студентота 3ий курс, работаю 4ый месяц, получаю 600 зелёных, был опыт в проектах java(spring), java(android). Вообще всегда любил .NET и сейчас твёрдо сижу над проектом управлением бурововой установкой(C#, wpf). Сам решил, что буду кодером ещё со школы, тогда и начал ездить по олимпиадкам. Считаю, что желание быть программером не может возниктуть просто так, скорее, ты просто перегоришь через месяц, может даже меньше.
>>82076215 >хочу быть программистом >чтоб через какое-то время получать хорошие бабки >бабки >бабки >бабки Мне очень жаль, но у тебя совсем иной мотиватор, нежелли у топпрогеров.
ахах ща стану праграмистом буду 100 тыщ зарабатывать на одеск)) ну че пацаны че почитать? дайте ссылку, но только чтоб за месяц или быстрее можно было уже работать))
>>82076215 >быть программистом весело пиздец. сам занимаюсь разработкой всякой хуйни для себя же, на чем и зарабатываю, без подробностей, но как я заебался за 4 года, нахуй, в жизни не стану программистом, лучше что то в реале мутить. А если ты еще и на дядю захочешь работать, то вдвойне сочувствую тебе
Закончил IT-факультет. Итак, в этой стране есть такие перспективы: 1. Пойти писать сайты на php для очередного торгового стартапа. 2. Стать iOS(Android)-разработчиком и писать никому не нужные клоны клонов известных игр
Двач, подскажи, что мне нужно изучить, чтобы меня взяли работать на завод электронщиком? О том, что первое время придется работать за копейки и нарабатывать опыт, я в курсе. Призываю в тред опытных электронщиков, электромехаников и прочих. Как долго мне придется с нуля идти к успеху? Какие возможности есть у меня сейчас? С чего лучше начинать?
Призываю в тред опытных программеров, а также дизайнеров и прочих. Как долго мне придется с нуля идти к успеху? Какие возможности есть у меня сейчас? С чего лучше начинать?