- Особенности влияния изучения нескольких языков программирования
- Стоит ли учить 2 или более языков программирования одновременно?
- Можно ли одновременно изучать несколько языков программирования?
- Почему второй язык программирования выучить проще, чем первый?
- Коротко: главная метафора
- Почему сложно учить первый язык программирования
- Почему второй язык учить гораздо проще
- Ограничения
- Исключение из правила
Особенности влияния изучения нескольких языков программирования
Попробуйте в уме высчитать результат вычисления следующего выражения:
true ? false ? 5 : 6 : true ? 7 : 8
Высчитали? А теперь идём под хабракат
Итак, если вы считаете, что в результате вычисления данного выражения должно получиться 7, то скорее всего вы PHP-программист. Если же вы считаете, что в результате вычисления данного выражения должно получиться 6, то скорее всего вы программируете на одном из других языков.
Всё дело в том, что в сравнении с другими языками программирования, PHP имеет неправильную ассоциативность тернарного оператора. В PHP тернарный оператор имеет левую ассоциативность, тогда как в других языках программирования этот оператор имеет правую ассоциативность. Соответственно при помощи скобок можно показать как вычисляет данное выражение PHP:
(true ? (false ? 5 : 6) : true) ? 7 : 8
и как его вычисляют другие языки программирования:
true ? (false ? 5 : 6) : (true ? 7 : 8)
Хуже всего то, что в половине учебников по PHP указано (проверено посредством указано, что тернарный оператор имеет в PHP левую ассоциативность.
Конечно, в реальной жизни за такой говнокод надо руки отрывать, но пример взят не из реальной практики, а был всего лишь тестовым заданием при устройстве на работу. Должен сказать, что пример был куда длинее, и я, наивно полагая, что в PHP тернарный оператор имеет, как и везде, правую ассоциативность, дал неверный ответ.
Причём здесь «влияние изучения нескольких языков программирования»? Часто мы, зная уже несколько языков программирования, пропускаем весьма общие разделы в учебниках по новому для себя языку, полагая, что там всё как и в других языках. Будьте внимательны и доверяйте только официальной документации.
Про тернарный оператор и его проблему в PHP есть страница на английском в Wikipedia.
Стоит ли учить 2 или более языков программирования одновременно?
Я сейчас учу python, но в училище куда я поступил учат c#. Стоит ли продолжать учить python или же сфокусироваться только на c#?
Простой 1 комментарий
Стоит учить пайтон, а с# ровно на столько, чтобы нормально сдать предмет. 🙂
А если серьезно, имхо не следует учить 2 языка одновременно, особенно если пока хорошо не знаешь ни одного. Будет каша в голове, плюс это не стихи и подразумевает одновременную практику. Много практики, что при нескольких языках мало реально. Пайтон, на мой взгляд, гораздо полезней и довольно прост в освоений, практически идеальный первый язык.
А в чем проблема то? Да, конечно программировать на паре языков одновременно трудно, но переключаясь вполне можно. В реальной жизни редко когда бывает, что человек программирует на одном языке. Прикладник бэкэндер, автоматически добавляет к родному SQL, программист для embedded кроме c и c++ часто еще python, javascript, lua для web-интерфейсов, системный программист обычно тоже несколько языков в связке должен знать. Вобще странно, что у вас только один язык преподают. Иногда мне студенты приносят лабы, так там обычно минимум c/c++, pascal, php, javascript.
Проблема заключается в том, что python больше использутся в web-программирование а c# в по-программирование .
Lone_Wanderer, с чего бы python только в web? Он язык общего назначения. Я уже давно не видел CMS или ERP на python, да если и используется, то не самостоятельно, а в связке с javascript. Есть много desktop приложений на python, просто интерфейс обычно с использованием wxWidgets или gtk или qt. Равно и на c# можно писать бэкэнды и даже фронтенды для web(.net). Почти на любом современном языке программирования можно писать все что угодно. Язык это универсальный инструмент — для чего-то подходит лучше, для чего-то хуже, но почти каждый можно использовать для любых целей. Ключевой особенностью современного языка является возможность импортировать библиотеки на С.
Мое мнение такое, нужно не учить язык — нужно учить программирование. А чтобы учиться программированию нужно практиковаться в разных языках и подмечать их сходства и различия.
Lone_Wanderer, Не только Web. Python — один из ключевых игроков на таком обширном и перспективном рынке разработки как Data Science / Artificial Intelligence (аналитика данных, машинное обучение, компьютерное зрение и т.п.)
aRegius, Верно, плюс для DevOps. Пишу на нем всякие скрипты для интеграции, парсинга всего и вся. Список для чего его можно использовать длинный.
Можно ли одновременно изучать несколько языков программирования?
Когда-то читал, что при изучении веб-программирования, JavaScript и PHP нельзя изучать одновременно, типа это вызовет путаницу. До сих пор придерживался этого совета, но недавно стал интересоваться такими языками, как Assembler, Python и Java, могу ли я начать изучать их одновременно? Или может чередовать их днями, месяцами?
Если утром буду изучать Ассемблер, днем Java, а вечером Python, могу ли я оказаться в психушке?
Никто не может Вам гарантировать, что Вы не окажетесь в психушке, не зависимо от того, будете Вы их изучать или не будете 🙂
По делу. Если языки отличаются друг от друга существенно, как указанные Вами, то переключаться между ними будет несложно. Сложнее было бы, если бы Вы изучали, скажем, C++, C# и Java.
Это будет тем более не сложно, если Вы уже умеете программировать. Хотя бы на каком нибудь одном языке. А вот если все три для Вас, это программирование с нуля, то я бы поостерегся.
Никто и ничто не сможет вам помешать их изучать одновременно, я даже знаю людей которые изучают три иностранных языка одновременно.
А разве иностранные языки не другое?
Я сам учу китайский, английский и француский, идёт изи, запутаться не реально, они разные..
Вы окажетесь в психушке, если будете изучать, но не будете писать)
Вообще, сложности обычно возникают, если в языках по разному реализованы одинаковые подходы, тогда легко запутаться и не понять вовсе.
А вообще, это нормально, изучать одновременно взаимосвязанные языки, если вы, например, используете их вместе. Если вы заходите написать сайт на django, то вам придется изучить python, параллельно изучая js (предположим, что языки верстки вы знаете), а потом и много смежных технологий.
А учить ЯП просто ради того чтобы его знать — смысла никакого нет.
Почему второй язык программирования выучить проще, чем первый?
Когда только начинаешь программировать, может возникнуть такой вопрос: как опытные программисты умеют писать сразу на нескольких языках?
Ответ простой: если вы освоите хотя бы один язык программирования, писать на любом другом можно начать за полчаса. Разберём, как это работает, и посмотрим на исключение из правила.
Коротко: главная метафора
Вот простая метафора всего, что будет написано ниже.
Если вы научились водить автомобиль на механике, вы можете сесть плюс-минус за любой автомобиль и поехать. Вам необязательно ездить именно за тем рулём, за которым вы учились в автошколе. Может быть, первое время вам будет непривычно в новой машине, но вы быстро освоитесь.
Но если вы хотите участвовать в гонках типа «Формулы 1», то вам нужно знать ваш болид досконально, до винтика.
То же в разработке: принципы одинаковые, а нюансы языка можно освоить быстро.
Почему сложно учить первый язык программирования
В самом начале всё может даваться с трудом:
- непонятно, как работают переменные и зачем они нужны;
- что такое циклы и почему их так много;
- сложно разобраться с классами и методами;
- откуда-то вылезли функции, и в них работают свои правила;
- неизвестно, как вообще продумать логику программы, чтобы получилось хоть что-то работающее.
Это нормально, потому что вы осваиваете что-то новое. Раньше вы этого не умели, потом решили научиться и столкнулись с трудностями.
Со временем вы заметите, что циклы работают предсказуемо, а функции — идеальный инструмент для некоторых задач. Ещё через месяц вы понимаете, как собрать каркас программы, чтобы он не ломался. Ещё через месяц классы и методы уже гораздо понятнее, и часть вещей можно делать намного удобнее.
Шаг за шагом вы осваиваете свой первый язык программирования. Изучение идёт не слишком быстро, потому что много нового.
Почему второй язык учить гораздо проще
А вот когда вы решили выучить второй язык, вам не нужно заново изучать как таковое программирование.
Вам достаточно разобраться только с «грамматикой» нового языка — как пишутся функции, какие ставятся скобки, какие есть нюансы с операторами и т. д.
Разумеется, в каждом языке есть нюансы и определённый стиль программирования, который в нём приветствуется. Но это можно изучить и наработать за месяц-другой, без отрыва от производства. А по-варварски написать код на новом для себя языке можно хоть через полчаса, если документация под рукой.
Ограничения
Всё, что написано выше, верно для базового уровня владения языком — достаточного, чтобы работать, но недостаточного, чтобы делать супердорогие высоконагруженные проекты.
Как только вы переходите в «высшую лигу», от вас требуется не просто знание принципов программирования. Вы должны знать специфику конкретного языка и даже больше того — конкретной версии языка, в которой вы работаете. Например:
- Как именно реализованы разные вспомогательные функции языка, что у них с быстродействием.
- Какие есть баги конкретно в этой версии, из-за чего ваш софт может не работать.
- Какие оптимизации есть в этом языке и как их эксплуатировать.
- Как работать с определёнными библиотеками и модулями, характерными именно для этого языка.
И многое другое. Всё-таки языки делают не дураки, и если вы хотите использовать возможности избранного вами языка на полную, нужно изучать его глубоко и внимательно.
Исключение из правила
Из этого правила со вторым языком есть одно исключение: оно не работает, если второй язык принципиально другой по своей природе. Например, если вы изучили язык высокого уровня — JavaScript, а потом захотели перейти на Ассемблер — язык низкого уровня.
Или если вы решили изучить Brainfuck. Но зачем?