Почему вам как разработчику важно знать больше языков

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

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

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

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

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

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

Парадигмы программирования в контексте императивного программирования

Основные парадигмы императивного программирования - объектно-ориентированное и процедурное программирование. Есть и другие. Есть много разных парадигм программирования, но они в некотором роде основные. Стоит отметить, что некоторые языки реализуют несколько парадигм. Например, Python реализует как объектно-ориентированную парадигму, так и процедурную парадигму.

Когда вы посмотрите на парадигму объектно-ориентированного программирования, вы заметите, что идея состоит в том, чтобы представить программу как коллекцию объектов, которые хранят свои внутренние данные и имеют внешние части доступа, такие как метод. В объектно-ориентированных языках программирования используются такие принципы, как инкапсуляция, наследование, полиморфизм и т. Д.

Преимущества

  1. Такие функции, как наследование, могут уменьшить избыточность и позволить использовать одну и ту же функциональность в нескольких классах без необходимости ее переписывать.
  2. Программы обычно просты в обслуживании.
  3. Код легко использовать повторно.
  4. Некоторые преимущества безопасности могут быть достигнуты за счет абстракции данных, чего нельзя добиться в некоторых других парадигмах программирования.

Недостатки

  1. Размер ваших программ будет довольно большим.
  2. Для разработки и создания программ, использующих эту парадигму, требуется гораздо больше усилий. Это связано с его сложностью в целом и большим объемом кода, который вам понадобится для его написания.
  3. Скорость программ, созданных с использованием указанной парадигмы, обычно довольно низка по сравнению с программами, созданными с использованием чего-то вроде функционального программирования или процедурного программирования.

Когда вы посмотрите на процедурное программирование, вы заметите, что языки в указанной парадигме выполняют последовательность процедур, которые обычно называются подпрограммами или подпрограммами. Если вы не знаете, процедура или подпрограмма - это просто серия вычислительных шагов, которые необходимо выполнить в определенном порядке. Процедурные языки обычно полагаются на блок и область видимости. Вы увидите такие ключевые слова, как if, for, while, e.t.c, и они используются для реализации потока управления программой.

Преимущества

  1. Для работы им не требуется много памяти.
  2. Они также хорошо работают с интерпретаторами и компиляторами.
  3. Они имеют простую структуру и требуют минимального количества кода.

Недостатки

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

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

Парадигмы программирования в контексте декларативного программирования

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

Логика

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

Преимущества

  1. Факты или информация отделены от того, как они используются, т.е. отделены от реализации.
  2. Это полезно для не вычислительных дисциплин.
  3. Это очень эффективно при доказательстве правильности решений.

Недостатки

  1. Его нелегко выучить или использовать.
  2. Он служит определенной цели, которая не подходит для многих задач, которые вы хотите достичь.

Функциональный

Функциональное программирование позволяет избежать общих данных, состояния и любых побочных эффектов, используя только чистые функции, которые возвращают значения, а не изменяют состояние программы. Это означает, что функциональные языки в значительной степени полагаются на рекурсию и передачу функций в качестве аргументов и возвращаемых значений. Эта парадигма произошла от лямбда-исчисления и реализована в некоторых популярных языках, таких как Lisp, Scheme, Scala и даже R.

Преимущества

  1. Чистые функции всегда возвращают один и тот же результат для одного и того же ввода, что упрощает их тестирование, отладку и понимание.
  2. Функциональное программирование также значительно упрощает параллельную обработку и параллельное программирование.

Недостатки

  1. Трудно представить или реализовать какое-то понятие государства.
  2. Рекурсия используется практически везде, а это значит, что нет стандартных циклов, и многим это не нравится.

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

Начиная с некоторых более старых языков программирования, Scheme и Prolog идут первыми в очереди, не то чтобы я когда-либо использовал их в каком-либо реальном проекте. Я, однако, думаю, что изучение концепций работы языков может быть полезным. Если вы хотите изучить более современные языки программирования, которые охватывают некоторые из этих парадигм, я бы порекомендовал изучить Python или JavaScript. Оба они являются языками сценариев и имеют динамическую типизацию. Итак, это уже дает вам хорошее введение в определенный тип языка программирования, на котором вы можете выполнять множество проектов.

Я также рекомендовал бы изучить Java, потому что это строго типизированный язык. Это также объектно-ориентированный язык программирования, и он многому вас учит об объектно-ориентированном дизайне, хороших навыках программирования и способах написания кода производственного уровня, который вы могли бы не получить, скажем, на Python или JavaScript. Моя последняя рекомендация - изучить C или C ++, потому что они являются языками программирования более низкого уровня. В C и C ++ вам нужно будет использовать такие вещи, как указатели, вам нужно будет узнать об управлении памятью и будет много концепций программирования, которые вы, возможно, не видели в таких языках, как Java, Python или JavaScript.

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