Лучший язык обучения

Джейсон Ли Ходжес (Jason Lee Hodges) - руководитель разработки программного обеспечения и автор книги Разработка программного обеспечения с нуля: всестороннее введение с использованием Scala. Вы можете узнать больше о книге или заказать ее в Интернете здесь.

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

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

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

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

Многие университеты будут знакомить своих студентов с Java, чтобы научить их фундаментальным принципам информатики, которые вам будет сложно изучить в достаточной степени на Python или Javascript. Но переход прямо к Java без какого-либо опыта программирования включает в себя сложную кривую обучения. Вы сразу же знакомитесь со сложной интегрированной средой разработки (IDE) с необходимой структурой папок, которая поначалу кажется отсталой и неинтуитивной. Более того, вы не можете написать какой-либо базовый код, не обернув сначала все в объект, а это значит, что вам нужно сразу перейти к объектно-ориентированному программированию (ООП). Нет ли языка, который обеспечивает хороший компромисс?

На помощь приходит Scala. Я считаю, что Scala - лучший язык обучения. Его неявная типизация и необязательная интерпретируемость позволяют вам приступить к работе в базовом контексте, как если бы вы работали с Python или JavaScript. Сначала его можно ввести в процедурную парадигму, чтобы вам не пришлось сразу переходить к объектно-ориентированному программированию. В то же время, когда вы будете готовы изучать объектно-ориентированное программирование, оно может предоставить все необходимые концепции, необходимые для полного изучения парадигмы. Кроме того, вы можете перейти к парадигме функционального программирования, когда будете готовы, без необходимости переключаться на другие функциональные языки, такие как JavaScript или Haskell. Scala также является языком C-стиля, который позволяет легко перейти на другие языки C-стиля, как только вы его изучите. Судя по репутации, Scala действительно содержит «все, включая кухонную раковину».

Итак, если вы готовы идти против тренда, быть противником и извлекать выгоду из этого решения, я рекомендую изучить Scala в качестве вашего первого языка. Фактически, моя книга Программная инженерия с нуля: всестороннее введение с использованием Scala предлагает пошаговый путь по языку, который поможет вам быстро приступить к работе. Зацени сегодня!