научиться программировать сложнее чем кажется

Как я сам научился программировать за 8 недель

Для многих, кто никогда не программировал, обучение программированию кажется невероятно сложной задачей. Как бы то ни было, спасибо тому огромному количеству ресурсов, которые недавно стали доступны в Интернет и являются бесплатными — самообучение программированию никогда еще не было таким простым.

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

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

Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):

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

Получение начального понимания веб-фреймворка Django (1 выходной):

Во второй раз я не был так сосредоточен на новизне концепции и смог сосредоточиться на понимании того как все части взаимосвязаны.

Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):

Опять же, я хотел бы рекомендовал попробовать каждый из них и посмотреть, какой вам понравится больше. Я делаю оба, но это, наверное, перебор.

Практика построения простых веб-приложений (2 выходных дня):

Создайте свой прототип (2 выходных дня):

Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?

Следующие шаги:

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

Источник

Как успешно научить себя программировать

Я хочу поделиться с вами статьей, которая во время прочтения очень сильно отозвалась во мне. Ее автор девятнадцатилетняя девушка веб-разработчик, Lydia Hallie, больше известная как «the most hardworking, yet most relaxed person» (очень трудолюбивый, но все-таки расслабленный человек) рассказывает о том, как современному разработчику справляться с многочисленными потоками входящей информации и сохранять мотивацию к саморазвитию.

После того, как я опубликовала свою предыдущую статью о том, как я стала разработчицей в 19 лет, сотни людей писали мне примерно одно и то же:

«Отличная статья. Я очень хочу научиться программированию, но просто не знаю, с чего начать. Это так расстраивает и подавляет, что я теряю мотивацию»

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

Сегодня существует множество ресурсов, которые «научат вас программировать». Однако, это не самое главное, и статья не об этом. Решающее значение имеет то, как вы строите свою жизнь, обрабатываете новую информацию, сохраняете мотивацию и фокусируетесь на главном.

«Всё это звучит хорошо, Лидия», скажете мне вы, «но, чувствую, это еще одна статья, которая мотивирует меня на 10 минут, пока я не вернусь к Netflix!» Прежде, чем я начну, хочу, чтобы вы поняли, что вы уже крутые, хотя бы потому, что решили научиться программировать. Это значит, что вы можете думать на несколько шагов вперед и способны выйти из зоны комфорта, даже если еще не сделали этого!

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

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

Хотя я знала, как важно помнить об этом при получении какого-то нового умения, я сама попала в эту ловушку, когда начинала. Я не чувствовала какого-либо прогресса и думала, что все вокруг меня всё равно остаются на голову выше. Мне казалось, что я никогда не достигну их уровня.

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

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

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

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

Эффективная работа с новой информацией

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

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

Чувствовать себя потерянным и запутавшимся во время просмотра курсов или чтения документации — нормально, каждый преодолевает это в начале своего пути. Разработчики с трудом могут обучить программированию людей, которые не слишком в этом разбираются, не прибегая к скучным расплывчатым терминам (да-да, это я про вас, Stack Overflow!).

Не важно, насколько по вашему мнению вы круты, не пропускайте основы. Всегда начинайте учить язык с самого начала и ничего не упускайте. База очень важна, и вы обязательно пожалеете о том, что не уделили ей достаточно внимания! Конечно, всегда можно погуглить, но это только замедлит вашу работу. Читая документацию, начинайте с первой страницы (или с 1.1 в некоторых случаях). Кому-то это может показаться пустой тратой времени, но поверьте мне: это не так. Уделяйте внимание всем деталям и в будущем вы будете себе благодарны!

Если вам трудно понять основы, расслабьтесь! Всё будет в порядке. То, как вам сейчас тяжело, никак не влияет, насколько хороши вы будете потом.

Каждые 10 минут или после каждого прочитанного абзаца объясните своими словами, что вы только что узнали. Это может быть достаточно трудно, но скоро вы поймете, какие части вы усвоили не до конца. Лучший способ выучить что-то: объяснить это кому-то другому, даже если рядом никого нет!

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

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

Сохранение мотивации

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

Читайте также:  нелинованная бумага что это такое

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

Ставьте себе небольшие цели. Не потому, что вы не стремитесь развиваться, наоборот — потому что вы стремитесь развиваться. Составьте список дел, которые вы хотите завершить сегодня. Может быть, прочитать одну страницу, просмотреть один курс или написать 10 строчек кода. Завершив свой список, вы почувствуете себя удовлетворенным и уверенным в своем успехе. Что звучит лучше: «я сделал всё, что планировал на сегодня» или «я сегодня прошел только 2 % курса»? К тому же, даже если вы всего лишь прочитали одну страницу или сделали одно поле ввода, это всё равно невероятно важно осознать. Мгновенное поощрение!

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

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

Работайте над личным проектом, в котором вы действительно заинтересованы! Не над одним из миллиона в списке дел, но над тем, который вы действительно хотели бы сделать. Я не имею в виду автомобиль с автопилотом или личного робота-повара, выберите что-то поменьше. Освежите макет сайта или напишите маленькую игру. Вы заметите, что мотивация закончить эти дела будет гораздо выше. А когда проект будет завершен, вам будет, что показать, ведь вы уже что-то сделали!

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

Источник

От «ничего не понятно» до первой работы: как становятся программистами с нуля

⏱ Время прочтения — 7 минут

Шаг 1. Знакомство с веб-разработкой

Начинаем с общего знакомства с направлениями веб-разработки. Вам предстоит определиться, насколько вам подходит программирование и какое направление ближе — фронтенд или бэкенд.

Фронтенд-разработчик отвечает за внешний вид страниц сайта. Он получает от дизайнера макет и превращает в готовую страницу — она подходит под разные экраны, все кнопки работают при нажатии, а схемы или таблицы корректно отображаются.

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

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

Много информации и базовых уроков есть на «Ютубе». Можно проходить их дома самостоятельно. Еще один вариант — читать книги по разработке для новичков. В обоих случаях нужно следить за тем, чтобы информация была актуальной. ИТ стремительно развивается — и есть риск получить устаревшие знания, а потом долго переучиваться заново.

К чему готовиться: если вы вообще не сталкивались с программированием, на этом этапе вам будет ничего не понятно! Это нормально. Получив первое представление о разработке, вы сможете понять, в какую сторону вам двигаться.

По времени этап займет около месяца.

Шаг 2. Обучение

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

Самостоятельное обучение

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

Идеи проектов для тренировки

Обучение на курсах программирования

На рынке много курсов для разных бюджетов, с разной длительностью и дополнительными опциями от школ — например, в HTML Academy во время обучения есть личный наставник, а после — стажировка и помощь в трудоустройстве.

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

Необходимая база для любого хорошего разработчика/верстальщика

Чтобы получить ее, возможно, понадобится не один, а два или три курса — например, по обычной и адаптивной верстке, а еще по JavaScript.

На курсах должны понятно объяснять базовые вещи из программирования: типы, операторы, алгоритмы, функции, циклы, объекты и структуры данных. Их понимание пригодится, даже если вы в итоге будете учить какой-то другой язык.

Инструменты (для верстки и JavaScript):

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

Как найти наставника и что от него ожидать

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

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

Шаг 3. Углубление навыков, чтобы зарабатывать больше

Первую работу вы можете найти уже на этом этапе. Например, после курсов по верстке можно устроиться младшим верстальщиком. Зарплата в данном случае будет в районе 25–45 тысяч. Те, кто выучил основы JavaScript, смогут зарабатывать до до 40–75 тысяч на начальном этапе.

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

Самые популярные и прибыльные фреймворки для фронтендеров — React, Angular, Vue.js, Ember.js и Meteor. Для бэкендеров — Yii2, Laravel, Symfony, Django и Flask. Если вы знаете JavaScript, но вам понравилось делать бэкенд, попробуйте Express.js — это фреймворк для Node.js.

Знание фреймворков повышает зарплату. Средний заработок React-разработчика — около 100 тысяч. И чем дольше и лучше вы работаете, тем больше получаете.

К чему готовиться: заложите на изучение фреймворков еще от 1 до 3 месяцев.

Шаг 4. Стажировка или первая работа

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

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

Трудоустройство. К этому моменту у вас уже будет наработанное портфолио — профиль на «Гитхабе» с вашими проектами. Осталось сделать резюме, указать ваши ключевые компетенции, сослаться на профиль и опубликовать на hh.ru или других сайтах по поиску работы. Пока у вас мало опыта, стоит активно откликаться на вакансии и ходить на собеседования.

Тина Кузьменко — выпускница HTML Academy, живет в Нидерландах. По образованию она журналист, но после переезда в новую страну освоила профессию и устроилась фронтенд-разработчиком в продуктовую компанию:

Еще во время учебы тщательно прорабатывала свое резюме. Позже красиво оформила фриланс-опыт по верстке. Также у меня накопилось немало личных проектов для портфолио, которые я аккуратно оформила на GitHub. Так что меня почти сразу стали приглашать на собеседования.

Читайте также:  натрия хлорид это для чего в быту

По итогу собеседований я получила в один день сразу два предложения. Одно из них было на мидла в продуктовую компанию Copernica Marketing Software. Его я и выбрала.

К чему готовиться: поиск работы может занять какое-то время — всё зависит от вашей активности и навыков. Если вы понимаете, что каких-то навыков не хватает и их часто спрашивают на собеседованиях, попробуйте изучить их параллельно с поиском работы.

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

Источник

Как изучать языки программирования

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

Немного личных воспоминаний

С детства я мечтал о карьере биолога, но в тринадцать лет, впервые ознакомившись с компьютером в школе, задумал стать крутым хакером. Когда у меня в пятнадцать лет появился регулярный доступ к компьютеру, первой мыслью было изучение программирования. Мой выбор пал на C++, была куплена книга из серии «Для чайников», но всё было ужасно скучным, непонятным и неинтересным. Уже тогда я понимал, что с C++ что-то не так. И сам ход изложения материала в книге начинался с краткого экскурса в функции, после чего сразу переходили к классам, причём всё объяснялось не на живых примерах, а на уровне глобальных абстракций. Авторы с увлечением рассказывали о прекрасном мире ООП, в котором нам посчастливится жить, про машины с разными функциями или животных с разным поведением. В общем, в то время изучение C++ и сама концепция ООП были заброшены.

Спустя несколько лет, во время учёбы в университете, я увидел в киоске маленькую книгу «Язык программирования Си», Брайана Кернигана и Денниса Ритчи. Купив её, я сразу же приступил к чтению. И о чудо! Всё было ясно, легко и ужасно интересно. Язык C очень маленький, простой и элегантный (я всё ещё так считаю), а сама книга была написана нормальным человеческим языком, не лишённым однако строгости. Я перечитывал её много раз, выполнял упражнения, и, таким образом, вскоре освоил этот язык и стандартную библиотеку функций.

Но на чистом Си много не напишешь, а мне хотелось писать серьёзные программы с красивой графикой. Программировал я в Slackware Linux, ибо в Windows как в среде программирования полностью разочаровался. В те времена я вообще много экспериментировал с разными системами, включая QNX и NetBSD. Но в свободных Unix системах выбор вменяемых графических библиотек был невелик: GTK+ и Qt. Причём вторая была написана на C++, с которым я не желал связываться, а в первой не было ясно вообще, как работать. И, если мне не изменила память, их редакторы интерфейсов генерировали огромный код, который ещё нужно было вставлять в свою программу, а не ресурсные файлы, что казалось мне совершенно ужасным.

Так бы я и не начал карьеру, если бы случайно не познакомился с Mac OS X, которую недавно портировали на Intel процессоры. Попросив у знакомого диск с Mac OS X 10.5 Leopard, я установил её на свой HackBook и первый раз ощутил себя на Земле Обетованной.

Помня о своём неудачном первом разе, я ещё долгое время скептически относился к объектно-ориентированному программированию. В начале даже планировал писать программы на чистом Си, используя библиотеку Carbon. И, как выяснилось – зря. Objective-C я изучил по официальному руководству компании NeXT – Object-oriented programming and the Objective-C language. В те времена изучающих новый язык ещё не считали поголовно идиотами или школьниками, поэтому книга написана нормальным языком, а авторы предполагают знание Си и общее представление о программировании. Оказалось, что ООП – это легко, интересно и очень удобно, а объекты – вовсе не абстрактные сущности, а всего лишь структуры, объединённые с функциями. На мой взгляд, именно так и нужно рассказывать основы объектно-ориентированного программирования.

В Xcode и основам Mac OS X я разобрался по замечательным урокам Алексея Борескова. После чего сразу же нырнул в Mac Developer Library, взялся за изучение официальных руководств по Cocoa и прочим библиотекам, параллельно начав писать программы.

Моим первым серьёзным проектом было портирование уроков по OpenGL с Windows на Mac OS X, которое растянулось на целый год. Лишь закончив его, я почувствовал себя достаточно уверенно, чтобы устроиться на регулярную оплачиваемую работу.

Изучая Objective-C, нельзя не услышать о Smalltalk, ибо на него очень часто ссылаются в материалах по Objective-C, видимо, извиняясь за непривычный синтаксис. Но Smalltalk был похож на Неуловимого Джо – все о нём слышали, но мало кто его видел или использовал. В конце концов и мне стало интересно, откуда есть пошла русская земля.

Узнав, что компания Cincom – лидер в сфере решений на Smalltalk – в рекламных целях предоставляет свои инструменты для некоммерческого использования, я сразу же заказал их. Менее чем несколько недель в мою дверь постучал курьер и вручил мне фирменную коробку с несколькими CD дисками и официальным руководством. Всё было совершенно бесплатно, даже за доставку не пришлось платить. На одном из дисков обнаружился VisualWorks – одна из самых мощных и быстрых коммерческих сред по разработке на Smalltalk в мире.

После я узнал про Squeak – свободную реализацию Smalltalk, основанную на оригинальной версии Smalltalk-80, – и познакомился со многими её разработчиками. Для обучения и исследований он подходит намного больше, чем прочие версии. Кстати, сообщество программистов на Smalltalk очень дружное.

Почти все серьёзные проекты являются кроссплатформенными, и их ядра написаны на C++, ибо Objective-C очень мало распространён за пределами Apple экосистемы. Главным образом из-за отсутствия удобных средств разработки. (Будем надеяться, что благодаря LLVM ситуация вскоре улучшится.) Так что мне пришлось изучить C++, несмотря на явную нелюбовь к нему. К счастью, к этому времени я уже научился отделять зёрна от плевел.

Впрочем, хакером я так и не стал.

Порядок изучения языков

C – первый язык

Это маленький (всего 32 ключевых слова в C89, 37 слов в C99 и 44 слова в C11) императивный язык, и его первичное изучение не займёт у вас много времени. В то же время C – очень мощный промышленный язык. Главным образом используется в системном программировании, написании аппаратно независимых компонент операционных систем, компиляторов и трансляторов языков, библиотек, программировании микроконтроллеров. По версии TIOBE Programming Community Index Си всё ещё лидирует по использованию, изредка вежливо уступая первенство Java.

Objective-C – второй язык

Он представляет собой очень тонкий слой поверх чистого Си. Все знания, полученные при изучении Си понадобятся вам в Objective-C. Причём объектно-ориентированная парадигма концептуально и синтаксически отделена от процедурной: в нём вы никогда не спутаете вызов функции и посылку сообщения. Основное его применение – создание пользовательских программ на устройствах компании Apple.

Smalltalk – третий язык

После Objective-C он покажется вам очень знакомым. И не зря, ведь именно его синтаксис и объектная модель были положены в основу Objective-C. Интересен прежде всего чистой реализацией объектно-ориентированной парадигмы. Все конструкции языка, включая условия, циклы, управляющие структуры и операторы, реализованы через механизм сообщений и вынесены в стандартную библиотеку классов. Несмотря на малое распространение он используется в крупных сложных проектах, где важна масштабируемость, гибкость и возможность изменений во время работы. Например, в финансовой сфере (Kapital – система оценки и управления рисками в JPMorgan), управлении производством (CIM в Texas Instruments), логистике (IRIS-2 в Orient Overseas Container Lines), страховании (Desjardins General Insurance Group) и прочих.

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

Очень избыточный (число ключевых слов превалило за 100), запутанный и сложный в изучении язык, со множеством исключений и массовыми нарушениями ОО парадигмы. Но если вы хотите работать в индустрии, знать его нужно, так как альтернативы ему не предвидится. На C++ написана большая часть научных и инженерных программ, игр, фото- видео- аудиоредакторов и много чего ещё. После того, как Objective-C и Smalltalk сформировали у вас правильное представление об ООП и программировании, C++ уже не сможет повредить ваш разум. Но всё равно будьте очень осторожны. Вообще, слово «знать» в применении к C++ имеет несколько иное значение, ибо знать его в том же смысле, в каком можно знать, например, Objective-C или Java мало реально. Хорошая новость: в большинстве случаев для успешной работы вам нужно освоить лишь небольшое подмножество языка. Великолепным примером грамотного использования C++ является I/O Kit – интерфейс программирования драйверов в Mac OS X.

Читайте также:  куда можно сходить в кирове подростку

Assembler

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

JavaScript

Пожалуй, главный язык программирования Всемирной Паутины. Основное его применение – создание динамических web страниц на клиентской стороне. Каждый браузер снабжён интерпретатором и средствами для анализа и разработки на нём. Если вы хотите заниматься web программированием, JavaScript – ваш выбор. В нём реализованы по меньшей мере три парадигмы: процедурная, функциональная и объектно-ориентированная, причём последняя основана на прототипах. На первый взгляд JavaScript кажется очень лёгким, ибо позволяет писать в C-подобной манере, но в реальности он сложный. Большинство JavaScript разработчиков программируют не с использованием языка и даже не на языке, а на одной из библиотек.

Язык Ada

По крайней мере его стоит выучить, чтобы шокировать знакомых священников громким заявлением. Шучу. Благодаря правильному дизайну, многочисленным встроенным механизмам и проверкам Ada является одним из самых безопасных языков программирования. Вряд ли вы будете регулярно использовать его (если, конечно, вам не повезло работать в Министерстве Обороны США, авиационной или космической сфере), но ознакомиться с ним крайне полезно. После его изучения вы узнаете, каким должен был быть C++.

Scheme

Функциональный язык, разработанный в Массачусетском Технологическом Институте специально для обучения студентов программированию. Один из диалектов знаменитого Lisp. Интересен своей элегантностью и минимализмом. В промышленности не замечен, главным образом используется (и весьма успешно) в образовательных учреждениях. Своё знакомство с миром функционального программирования лучше начать именно с него.

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

Особое мнение

Многие авторы советуют первыми изучать скриптовые языки высокого уровня, такие, как Shell, Perl, JavaScript или Scheme. Но лично я рекомендую первым языком учить именно Си. Скриптовые языки с автоматическим управлением памятью, скрывающие всю сложную работу с указателями глубоко в недрах программы, действительно легче в освоении, но все их преимущества можно в полной мере понять и оценить лишь после изучения языка уровнем ниже.

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

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

Более того, поскольку практически все интерпретаторы и компиляторы языков высокого уровня, а также их модули расширений (во всяком случае самые важные их компоненты) написаны на C, его знание будет вам очень полезным, если вы захотите внести в них изменения или исправления.

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

Хороший пример объектной модели, реализованной на языке C – библиотека CoreFoundation в Mac OS X.

Как учить язык?

Изучение языка программирования очень похоже на изучение обычного человеческого языка общения. Чтобы выучить новый язык вам понадобятся:

Во-первых, хороший учебник. Не «Для чайников» и не «За 21 день». Лучше, если это будет учебник именно по языку, а не руководство по созданию и выкладыванию игры в App Store (в котором процессу выкладывания посвящено больше времени, чем самому программированию). Во-вторых, стандарт языка ANSI/ISO и справочник по стандартной библиотеке. И, в-третьих, учебные и реальные примеры, которые можно найти в Сети.

Читайте учебники, выполняйте упражнения, изучайте чужие и пишите свои учебные примеры. Экспериментируйте с языком, например, попробуйте реализовать на нём несвойственные ему парадигмы. Полезное упражнение не только поможет вам лучше прочувствовать язык, его достоинства и недостатки, но и приведёт вас к правильной мысли – не существует универсальных языков. Бывают языки хорошо или плохо спроектированные.

Лучшее упражнение – это написание небольших программ, реализующих различные структуры данных и алгоритмы – деревья, списки, таблицы, графы, поиск и сортировку из книги «Алгоритмы. Построение и анализ», Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн (Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein). Несложные функции стандартной библиотеки или утилиты командной строки. Не нужно пытаться сразу писать большие и сложные программы, всё равно вы ещё плохо знаете язык.

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

У многих на фоне первых успехов возникает желание сразу начать писать большие серьёзные программы. Я крайне не рекомендую вам следовать их примеру. Взявшись за сложный проект, вы через месяц обнаружите, что ваш первый код был ужасен и приметесь его переписывать, вполне возможно, вам потребуется ещё несколько итераций. В результате вы потратите время и силы на то, что нужно отрабатывать на учебных или небольших программах. Так что не торопитесь – к счастью, примерно за год изучения и упражнений легко можно выйти на приемлемый уровень коммерческой разработки.

Даже если вы опытный программист, лучше вначале разберитесь в языке – как известно, программисты на Fortran (в основном касается ранних версий) могут на любом языке писать как на Fortran. Дело в том, что язык программирования не ограничивается синтаксисом и семантикой, кроме них он включает в себя набор шаблонов, приёмов, идиом и парадигм характерных именно для него. За неделю разобраться в них не представляется возможным.

Подпишитесь на каналы и новостные группы, списки рассылки, посвящённые вашему языку. Ценным источником информации и ответов на многие вопросы являются профильные сообщества в stackexchange.com и аналогичных ресурсах.

В последнее время получил широкое распространение иная стратегия – нацеленная на немедленный результат. Появилось множество книг и курсов, обещающих сделать из человека без малейшего представления о программировании высококлассного специалиста менее чем за месяц. Немало людей посещают подобные курсы (за приличные деньги), учатся писать screensaver, радостно публикуют его в Сети и получает на выходе красивый сертификат с которым бегут устраиваться в фирмы. Подобный подход опасен тем, что создаёт иллюзию знания: человек наспех выучивает одну технологию (как правило не самую лучшую) и считает её единственно возможной.

Источник

Строительный портал