Самообучение - вопрос №2234890

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

Лучший ответ по мнению автора

    Прошу прощения за менторский тон, надеюсь то, что нижеследующий текст это отражение моего опыта и советы, которые я бы дал себе сам, меня немного извиняет.     Вывод о том, что Вас не научат программировать в институте — верный. Хороший программист, работая по специальности, получает существенно больше преподавателя. В результате IT компании в нашей стране, сами готовили себе программистов.Про активность яндекса (школа, открытые лекции, конкурсы) можно погуглить, про одну из не самых последних IT компаний я знаю изнутри. Мы брали на работу любых физтехов и учили их с нуля. Мне сейчас кажется, что главный шеф только за этим и читал им лекции.    Теперь про языки. Все зависит от того, чем Вы собираетесь заниматься и куда развиваться. Вот число вакансий на hh.ru:        программист 1C                        1 226 вакансий        программист Java                      1 105 вакансий        программист (php or Wordpress)          883 вакансии        программист c#                          704 вакансии        программист (Python or django)          611 вакансий        программист C++                         142 вакансии        программист (delphi or pascal)          110 вакансий    Но значит ли это, что надо изучить 1С — чудовищный силы, язык массового поражения?!    У меня нет ответа на этот вопрос, но то что 1С не поможет Вам, а скорее даже помешает, стать программистом, я гарантирую.    Квалификация программиста лишь в небольшой степени определяется теми языками, которыми он владеет.    Гораздо важнее, имхо, знать типичные приемы борьбы со стандартными задачами и уметь сводить нестандартные задачи к стандартным.    Прочувствовать то, что программы гораздо чаще читаются, чем пишутся. Если читая Вашу программу, живой коллега не матерится, поверьте, это уже очень не плохо.    Научиться пользоваться системами контроля версий (Mercurial, GIT), а не плодить папочки с разными версиями программы.  Правда уже само желание сохранять ранние версии своей работы, это движение в правильном направлении.    Приучить себя писать тесты для своего кода. Есть даже такая точка зрения, что тесты должны быть написаны до того, как будет написан код. Даже если потом не найдутся более важные дела, то тесты написанные после, выявляют меньше ошибок (это любопытный момент, но не будем на нем останавливаться).    Так как же быть?    [От сюда и дальше имхо^2.]    1. Если с английским Вы на «Вы», то это надо исправить в первую очередь по трем причинам.        a) В опухшем от патриотизма источнике духовности, программисты не нужны. И первая строчка в списке (1С) косвенное тому подтверждение.        б) Очень часто техническая документация на программные продукты существует только на английском. Современные переводы ужасного качества, полная потеря смысла встречается сплошь и рядом.        Если при чтении переводного технического текста, у Вас возникает ощущение что что-то тут слишком мудрено, не поленитесь найти это место в оригинале, обычно достаточно минимального владения языком, чтобы понять что к чему.        в) На русском языке нет сервиса, даже отдаленно напоминающего stackoverflow.com/ и хоть сейчас, он уже совсем не торт (куда ж без этого) это, по-прежнему огромная база ценнейшей, актуальной информации.    2. Если у Вас есть возможность, устройтесь стажером в IT компанию. Вы получите опыт, которого нет ни у одного из Ваших институтских преподавателей. Наши физтехи работали по индивидуальным графикам, как правило, один два дня в неделю, часто неполный день.    3. Изучайте чужой хороший код, это почти любые опенсоурсные проекты со средним числом разработчиков. Найдите программку близкую Вашей душе, я в свое время с большим интересом изучил устройство GnuGo и CSound. Недавно пришел в восхищение от внутреннего устройства библиотеки xgboost.    Еще один источник примеров хорошего проектирования это интерфейсы к известным популярным библиотекам. Взять хотя бы Win API это (имхо) не шедевр, но изначально очень хорошо продуманный и последовательно развиваемый интерфейс. Обратите внимание, как на протяжении больше чем 20 лет, происходит добавление новых возможностей, и при этом обратная совместимость в целом сохраняется.    4. Ещё раз про языки. Изучите не аналог Pascal, а язык максимально на него не похожий например Python. Теоретически, все развитые языки программирования допускают любые стили и методы программирования. Но обычно на конкретном языке удобно применять лишь некоторые приемы программирования.    В результате получается, что человек знающий только один язык становится мастером одного двух подходов, и даже не подозревает о существовании других.    Но недостаточно просто изучить второй язык (как показал опыт прививки питона, на стройное тело матерого Дельфиста, коллега где-то с месяц радовал меня паскализмами написанными на питоне), надо приобщиться к общепринятой практике программирования на нем (см. 3. Изучайте чужой хороший код).    Даже если потом Вы будете программировать только на Дельфи, освоение новых приемов, типичных для питона и трудно реализуемых (но иногда так необходимых) в Дельфи, значительно расширит круг Ваших возможностей.    Если опыт с питоном пройдет удачно, то есть еще LISP, Prolog, Tcl, Forth (не могу умолчать про Brainfuck и его дальнейшее развитие Whitespace).    5. Керниган Б., Пайк Р. «Практика программирования» — Книга изменившая не мою практику (практика довольно долго оставалась прежней), а сам подход к программированию. Читается очень легко, большинство примеров на Си. Несмотря на то, что она написана довольно давно, основные моменты не утратили актуальности. В гуляющем по сети варианте, код примеров распознан с ошибками. Это может вводить в заблуждение, особенно если Вы только начали изучать язык Cи. Так что купить бумажный вариант будет не самой плохой идеей.    Стив Макконнелл «Совершенный код» — Очень хорошо структурированное изложение. Читать можно в любом порядке. До сих пор поражаюсь тому, насколько толковую книгу можно написать на такую обширную и часто неоднозначную тему.    6. Алгоритмы, структуры данных и анализ сложности — вероятно то немногое, чему можно научиться в институте. Часто оказывается, что решение практической задачи можно получить, внеся небольшие модификации в классические алгоритмы/структуры данных.    7. Практика. Мне сильно повезло, с подходящими задачами. Сначала это было хобби: обработка звука, алгоритмическая композиция, теория игр. Потом серьезные задачи связанные с моей (тогда)основной работой. Не могу не упомянуть своих коллег, которые с пониманием относились ко всем моим ошибкам, их неизменно доброжелательное отношение невозможно переоценить.    Вокруг полно задач разной степени сложности. Ну а если вдруг ничего не приходит в голову, то есть например uva.onlinejudge.org, тысячи их, теперь и на русском встречаются. Пять лет прошло, но я до сих пор помню как решал 10763 — Foreign Exchange (https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=problem_stats&problemid=1704&category=), с виду простая задача, но очевидное простое решение работает в три раза медленнее.    8. Пользуйтесь собственными программами, нет лучшего способа обнаружить их недостатки.        Удачи!        Ps «Учись студент, а то так и будешь всю жизнь ключи подавать.»
08.12.16
Лучший ответ по мнению автора

Еva

Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Информатика
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store