Выбор первого языка программирования

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

Немного истории

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

Машинные языки (низкий уровень)

Обычно известный как сборка, являются языками программирования, которые мы могли бы определить как диалекты более общего языка ... Это звучит немного сложно, но я собираюсь проиллюстрировать это ... Мы знаем, что универсальный язык вычислений - это электричество, это означает, что в конечном итоге компьютер читает 0SY 1да, назовем это eкомпьютерный английский. В этом примере основным правилом является испанский, но, как мы хорошо знаем, испанский, на котором говорят латиноамериканцы, отличается от испанского, на котором говорят в Испании, и даже в этом случае испанский из Перу не такой же, как испанский из Аргентины. Очевидно, у всех нас есть почти одинаковые слова (0SY 1s), но использование и значение могут варьироваться в зависимости от контекста.

Это происходит на уровне процессора. Когда мы говорим о вычислительные архитектуры, (amd64, intel, arm, ...) мы имеем в виду диалект этого компьютерный испанский. Это связано с тем, что разные компании понимают порядок и значение по-своему, поэтому некоторые из них различаются в деталях, таких как поток тока или порядок, в котором элементы должны храниться. 0SY 1s.

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

Языки высокого уровня

Эта большая группа рассматривает те языки, которые появились после сборка. Необходимость получения переносимого кода привела к появлению группы языков под названием составлен. Среди них первым воспользовался C, который доминирует в программировании на уровне операционных систем с 70-х годов.

Скомпилированные языки

Давайте посмотрим на практический пример того, что я комментирую. Давайте посмотрим на очень простую программу на языке C, которая печатает одну строку кода.

Своя. Кристофер Диас Риверос

После его компиляции мы получаем следующее:

Собственный дизайн: Кристофер Диас Риверос

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

Своя. Кристофер Диас Риверос

Это перевод наших трех строк кода из simple.c, файл simple.s создается с помощью команды gcc -S simple.c и это то, что наш процессор понимает на диалекте сборка. Очевидно, чтобы создать исполняемый файл, состоящий из 0SY 1s файл необходимо обработать simple.s и подключите его к разделяемым библиотекам нашей системы. Это делается с помощью ассемблер (as) y un  conector (ld).

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

Переводимые языки

В этой группе у нас есть большое разнообразие языков, среди наиболее важных - Python, Ruby, Javascript, PHP и т. Д. Основная идея этих языков состоит в том, чтобы обеспечить быстрый способ создания и запуска программ, потому что многие сложных процессов выполняются в интерпретаторе, а программирование логики - это то, что реализовано в коде. Давайте посмотрим на тот же пример выше, но на этот раз написанный на Python:

Своя. Кристофер Диас Риверос

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

Своя. Кристофер Диас Риверос

Интерпретируемые языки предоставляют разработчику более высокий уровень безопасности, поскольку они имеют более строгие меры безопасности (ОСТОРОЖНО, что они не идеальны, поскольку даже лучшие могут ошибаться), и мы больше не страдаем от риска выстрелить из оружия, не осознавая это, поскольку с первой попытки интерпретатор вызовет предупреждение, и выполнение будет отменено. Главный недостаток становится очевидным при выполнении программы, так как она медленнее, чем ее двоичный аналог, именно из-за большего объема обработки, чтобы гарантировать, что код работает. Если программе не требуются чрезвычайно короткие сроки, разница может остаться незамеченной, но если мы говорим о тысячах или миллионах данных в секунду, разница становится экспоненциально заметной на компилируемых языках.

Набор текста

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

Парадигмы

Как и все в мире GNU / Linux, языки программирования основаны на парадигмах, и вокруг них создаются сообщества. Например, у нас есть Фонд Python o Ruby o PHP o Bash (в этом случае это сообщество GNU). Я хочу сказать, что не могу выразить то большое количество плюсов и минусов, которые есть у каждого из них, но могу сказать вам, что там, где есть бесплатный язык программирования, есть сообщество, где вы можете учиться и участвовать. Стоит отметить, что многие, если не все языковые интерпретаторы написаны на C или на каком-то близком производном, и их разработка обычно выполняется небольшой группой сообщества, которая отвечает за принятие решений, которые повлияют на всех пользователей языка. Можно даже создать институты для обеспечения правильного развития языка, как в случае с C.

Что выбрать?

Мы уже достаточно поговорили о языках, и я до сих пор не отвечаю на самое главное 😛. Но я надеюсь, что после просмотра этой небольшой статьи мне нет необходимости указывать вам, какой язык выбрать, поскольку с этой информацией вы полностью сможете найти тот, который вызывает любопытство. Очевидно, если вы хотите научиться программировать на языке сборка потребуется много времени, прежде чем у вас появится что-то функциональное, время будет значительно сокращено, если вы выберете компилируемый язык, где, помимо переносимости в системах * NIX, вы сможете узнать информацию о работе одна и та же система, поскольку взаимодействие с C или производными заставляет вас так или иначе узнать, как работает операционная система в общих чертах. Наконец, если вы хотите узнать что-то легкое и позволяющее многое делать без необходимости много понимать, интерпретируемые языки - это интересный способ изучить и развить навыки программирования.

Учитесь с чем-то захватывающим

Это лучший совет, который я могу вам дать: если вы хотите чему-то научиться, вам нужно сначала найти что-то захватывающее, иначе будет довольно сложно преодолеть типичную кривую обучения для всех языков программирования. Предположим, вы управляете системами, в этом случае вам может потребоваться выучить идеальный язык для сценариев (интерпретируется), внутри них у нас есть Perl, Python, Bash и т.д. и т.д. играть. Возможно, вы захотите создать инструмент системного уровня, поскольку у нас есть C, Python, Perl, как вы увидите, некоторые из них повторяются, и это потому, что многие языки могут использоваться для многих задач, поэтому определение из многоцелевые языки в большинстве из них.

Начать проект

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

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


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   анонимный сказал

    Как всегда на 10 !!!!!! Спасибо за ваши статьи. Приветствую и еще не все !!!!

    1.    КрисADR сказал

      Большое спасибо 🙂 призывает меня продолжать писать. Ура

  2.   Рубен сказал

    Я считаю ошибкой задавать вопрос «какой язык выбрать?» Я один из тех, кто думает, что язык - это наименьшее из всего, что важно - изучить основы программирования и «мыслить вычислительно». Определитесь с синтаксисом, его типизацией, поддерживает ли он ООП, его полезность и т. Д. Я думаю, что это станет естественным явлением в процессе обучения, и, в конце концов, каждый программист знает более 1, 2 и 3 языков ... и благодаря имеющимся у него концепциям программирования (а не синтаксису) он может программировать на языке, на котором вы еще не знакомы.
    Тем не менее, для посвященных, я думаю, что хорошим языком может быть Python из-за его простоты, но, прежде всего, пойти немного дальше, изучить алгоритмы и знать, как все работает «внутри».

    Приветствую ChrisADR

    1.    КрисADR сказал

      Привет, Рубен, спасибо, что поделился
      Есть кое-что, чему я со временем научился в мире программирования, а именно, что «тот, кто много покрывает, не сжимает», и под этой известной фразой я имею в виду, что много раз, особенно самые восторженные, решали попробуйте все понемногу и очень быстро научитесь программировать. Я считаю, и это мое личное мнение, что хороший разработчик должен знать и владеть языком компилятора и языком интерпретатора, в дополнение к определенному диалекту ассемблера.
      Причина в следующем: прототип всегда должен быть простым и быстрым, легко генерируемым и, как правило, показывать результат, но если этого недостаточно, должен быть «план Б», к которому можно прибегнуть, когда появится интерпретатор. до предела.
      Знание диалекта ассемблера не только придает уверенности, но и учит мыслить «вычислительно», но очевидно, что эта часть является наиболее сложной из всех, и это определенно то, к чему приходят не все программисты.
      Но вернемся к теме, потому что основная идея, на мой взгляд, это «выбрать язык и много практиковаться», потому что на самом деле единственный способ научиться программировать - это читать и писать код, и это то, что я узнал от сообщества разработчиков ядра. Когда вы сохраняете один и тот же синтаксис в течение длительного времени, вы перестаете видеть форму и начинаете беспокоиться о ФОНЕ. Идея выбора языка или синтаксиса с самого начала заключается в том, чтобы можно было привыкнуть к его чтению и письму таким образом, чтобы можно было начать читать ЗНАЧЕНИЕ программы, а не синтаксис программы.
      Это основная причина этого поста, что каждый выбирает свой язык, чтобы в дальнейшем мы могли объяснить концепции, возможно, этим проясняются сомнения 🙂
      Приветствую и спасибо, что поделились.

  3.   Деибис Контрерас сказал

    спасибо за пост, это было хорошо.

    привет

    1.    КрисADR сказал

      Привет Дейбис, спасибо, что поделились 🙂 Приветствую

  4.   Хорхе ФС сказал

    Мой совет: что угодно, кроме PHP. Двадцать лет назад PHP имел определенный смысл в своем существовании из-за высокого уровня сложности программирования Интернета на другом языке с использованием CGI. Но сегодня существует огромное количество фреймворков, которые делают веб-разработку более увлекательной на мощных языках, таких как Django для Python, Spring для Java или Rails для Ruby. Хотя в настоящее время PHP фигурирует во всех диаграммах популярности языков, я считаю, что со временем он потеряет свою актуальность.
    Я настоятельно рекомендую начать с C \ C ++, чтобы понять реальность программирования, хотя кривая обучения очень крутая.
    Привет.

    1.    КрисADR сказал

      Привет, Хорхе, спасибо за то, что поделился, просто вспомнил Laravel, который представляет собой довольно прочный фреймворк 🙂 Мне лично никогда не нравились Spring или Java для веб-разработки, я нахожу это довольно громоздким, но я думаю, что это часть того количества времени, в котором они были на рынке, в то время они были пионерами, и, безусловно, сегодня современные альтернативы (Js, Python и Ruby) смогли улучшить способ представления кода, который можно читать и изменять без особых усилий.
      Я также склонен к тому, чтобы люди изучали C / C ++ в какой-то момент своей жизни, я начал с Java, но я думаю, что в этом прелесть программирования, вы можете начать с чего угодно, пока вы последовательны, это будет быть полезным 🙂 Ура

    2.    Рубен сказал

      Я больше не могу с тобой не согласиться. Я начал много лет назад с C и VB, чтобы позже сосредоточиться на PHP и JS (так как я сосредоточился на веб-разработке), а позже, изучая, я изучил в основном C / C ++ и Java.
      У PHP есть ряд преимуществ, которые я не мог перечислить в этом сообщении. PHP7 работает быстро (быстрее, чем Python ... без использования hhvm, различных кешей, фреймворков, таких как Phalcon или байт-код в случае Python), он имеет огромное количество библиотек и фреймворков, он имеет огромное количество непосредственно реализованных функций для использовать в любое время. Его синтаксис, подобный C, упрощает переход на другие языки.
      30% веб-сайтов во всем мире созданы на WordPress (PHP), и это, похоже, не изменится, его использует Википедия, Facebook (с hhvm) и большое количество сайтов, всего 80%.

      Напоминаю, что Ruby on Rails, как и Django, 12 лет! Какой квоты они достигли за это время? И, конечно же, мы говорим о 2-х фреймворках, которые практически являются монополистами и не имеют типа фрагментации. Какие еще у меня есть серьезные альтернативы? Утверждать, что PHP потеряет актуальность, не имеет смысла.

      Теперь, когда Python в моде, потому что у него быстрая кривая обучения, это простой язык, и они продают его вам как «станьте программистом за 20 часов с Python и поработайте над ним» при поддержке таких компаний, как Google и То, что сейчас существует Мода на поиск новых языков (Go, Dart….), чтобы выделиться в резюме (или как ежедневное рождение 50 фреймворков для Javascript!), не означает, что все меняется.

      Ruby - очень интересный язык, но он так сильно нарушает установленные шаблоны, что мне трудно поверить, что он стал более популярным, чем PHP. Конечно, я считаю Ruby худшим языком для начала программирования.
      Я понимаю, что вы говорите мне, что программирование на Python может быть приятным, даже на Ruby с его многочисленными особенностями ... но Spring с Java? В самом деле? Java может быть многим ... но более приятным, чем Python и PHP?

      Начать с Python очень хорошо, но если вы будете придерживаться только Python, вы рискуете, что многие компании сочтут ваш уровень программирования не «глубоким» (даже если вы очень хорошо разбираетесь в Python). Это потому, что вы конкурируете с другими «многоцелевыми» языками, такими как C ++ или Java. Вы можете программировать на Python, не зная разницы, что такое указатель, побитовые операции, как работает сборщик мусора и т. Д.
      Python, возможно, наименее похож на «классическое программирование», которое существует, и его можно рассматривать как «детский язык» (воспользуйтесь метафорой), а это, в свою очередь, является преимуществом и недостатком.

      1.    Хорхе ФС сказал

        «Python, возможно, наименее похож на« классическое программирование », которое существует, и его можно рассматривать как« язык для детей »(поймите метафору), и это, в свою очередь, является преимуществом и недостатком». LOL, это одна из самых забавных вещей, которые я когда-либо видел, сказанные о Python. Вы когда-нибудь действительно изучали Python?
        Как давно это было во всем мире за пределами PHP?
        Друг PHP был мертворожденным. PHP (\ d +) несет большую нагрузку из-за очень плохого начального дизайна, и для поддержания сообщества пользователей он продолжает очень тщательно перетаскивать все эти первоначальные ошибки дизайна. PHP родился без модульности, с множеством функций в стиле C (которые, кстати, я не знаю, откуда вы его взяли, так как его синтаксис похож на C, его можно легко перенести на другие языки). В языке высокого уровня, каким и должен себя вести PHP, есть такие уродливые вещи, как этот список функций, перечисленных на его официальном сайте. http://php.net/manual/en/indexes.functions.phpЭто потому, что он родился без модульности, поэтому все грязно перемешано и без пространств имен.
        Это фрагмент PHP-кода:
        "Stream_notification_callback");
        stream_context_set_params ($ ctx, $ params);
        var_dump (stream_context_get_params ($ ctx));
        ?>
        в какой-то момент можно определить, откуда были импортированы все эти «потоковые» функции? НЕТ, тогда вы могли бы сказать, что это встроенные функции, но тогда вся экосистема является встроенными функциями? Итак, в PHP-коде много мусора, поэтому, если вы не можете понять сложность и бесполезность такого плохого дизайна, простите меня, но ему еще есть что посмотреть.
        Wordpress - отличное программное решение, но это не значит, что у него хорошая технологическая база. Вы можете молотить камнем и выбивать гвозди зубами, и вы все равно можете выполнять отличные столярные работы, но, конечно, с гораздо большим объемом работы, чем другой плотник, использующий хороший молоток.

        С другой стороны: «стань программистом за 20 часов с Python и работай над ним», я никогда не видел такой глупости. Вы можете создать веб-сайт на PHP за 20 часов, не зная, как работает веб-программирование или само программирование. Фактически, именно поэтому PHP так популярен, потому что новички, войдя в этот мир, рассматривают PHP как точку быстрого развития (вот почему так много кода PHP - отстой).
        Что касается недостатков Python, единственный, в котором он был успешным, - это работа с указателями, но в любом случае Python является языком высокого уровня (как и Java), и он не использует их на уровне синтаксиса; но побитовые операции, серьезно?, вы имеете в виду это x << y, x >> y: https://wiki.python.org/moin/BitwiseOperators. Я гораздо меньше серьезно разбирался в сборщике мусора: https://docs.python.org/3/library/gc.html.
        Пробелы в PHP:
        -PHP имеет очень плохой дизайн объектно-ориентированного программирования (ООП).
        -Вы пока не можете перегружать операторов.
        -Сюрприз, function overloading в PHP это не то, чего вы, естественно, ожидаете от этой концепции.
        … .. и мне просто стало скучно, хе-хе.
        Привет.

        1.    Рубен сказал

          Я заключил в скобки «понять метафору» (сравнивая Python с C ++ / Java в той же рабочей среде), ясно, что вы этого не поняли. Я мог бы сказать вам, что программист на C ++ может выучить Python намного быстрее, чем программист на Python изучает C ++, так же неудивительно, что средняя зарплата программиста на C / C ++ выше, чем у программиста на Python.
          Я мог бы объяснить вам это на других примерах, даже с рисунком! но похоже, что вы сосредотачиваетесь только на деконтекстуализации и высмеивании того, что я поставил.

          Я никогда не говорил, что PHP - лучший язык в мире или что у него образцовый дизайн, я не знаю, откуда вы это взяли. Я думаю, что прежде чем оценивать знания других, вам следует улучшить свое понимание прочитанного. Что верно (и я сказал в своем сообщении), так это то, что разработка с его помощью очень гибкая, в дополнение ко всей экосистеме фреймворков, библиотек и утилит, которые вы можете найти.
          Кроме того, какое сравнение мы проводим? Python как многоцелевой язык или для Интернета? В таком случае, почему мы сравниваем его с PHP? У PHP есть специальное поле, и именно в этом поле Python (с долей 0.2%, которая не изменилась в этом году) бледнеет рядом с PHP.
          Теперь мы собираемся увидеть тенденции PHP; с 82,4% в январе 2017 г. до 83.1% в январе 2018 г .: https://w3techs.com/technologies/history_overview/programming_language

          Python - тот, кто свергнет PHP? В каком году? в какие пять лет? десятилетие?
          Python может использоваться во многих других задачах и даже получить более широкое распространение, чем PHP, но Python как язык веб-разработки далек от того, чтобы быть даже актуальным: 0.2% стагнируют против 83.1% (с ростом в этом году).

          Вы также воспринимаете вещи как должное, говоря, что я не выхожу за пределы PHP, намекая, что я знаю PHP только тогда, когда я уже давно не программировал на PHP, ха-ха. В настоящее время по работе я в основном программирую на Java.
          Я также не сказал, что, программируя на Python, вы ничего не знаете о побитовой обработке, сборщике мусора или указателях. Скорее, вы можете программировать на Python, даже не зная, что это такое. Однако я очень сомневаюсь, что это так для программиста на C ++. И, очевидно, я провожу сравнение, когда Python входит в эту область «многоцелевого языка», а не для веб-программирования.

          Стать программистом за 20 часов - это просто шутка, преувеличение. Тем не менее, я мог бы разместить здесь различные ссылки об онлайн-образовательных платформах и курсах, которые обещают похожие вещи. Не вините меня, вините в этом рынок труда, который думает, что стать «опытным программистом» - значит пройти 20-часовой курс. И Python - один из самых модных языков, а также с самой быстрой кривой обучения ... белый и в бутылке.

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

          приветствия

  5.   никто сказал

    C -> Go -> (Lisp | Haskell | Java | что угодно)

    1.    КрисADR сказал

      Недавно один из читателей прислал мне на электронную почту рекомендацию книги по Го, определенно языка, который нужно учитывать в будущем, и о котором, возможно, будет здесь публикация 🙂 Множество графиков, которыми можно поделиться

  6.   мвр1981 сказал

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

    1.    КрисADR сказал

      Здравствуйте, mvr1981, действительно интересные вопросы мы будем катать их от последнего к первому.

      Как я могу сотрудничать с другими, чтобы меня не выгнали или исключили из-за отсутствия знаний и опыта?

      Если вы не хотите, чтобы вас пинали, первым делом нужно изучить процесс; вы не можете себе представить, сколько людей приходит на проекты, желая делать что-то исключительно по-своему, желая, чтобы сообщество адаптировалось к их желаниям. Это определенно похоже на то, как если бы я пришел к вам домой и устроил беспорядок и не уважал вашу семью (это часто бывает так). Если вы хотите предотвратить это, обратите особое внимание на рекомендации по внесению вклада, средства, с помощью которых это можно сделать, и не присылайте что-то неполное; если вам нужна помощь, всегда есть средства для общения, но плохо выполненная работа, вероятно, создаст плохое первое впечатление. Если вы не хотите исключать себя, это зависит от вас, вы можете рассматривать его как бесполезного программиста, который не знает, что он делает, или как человека на пути к тому, чтобы стать отличным программистом, и это происходит только с практикой и, конечно, с ошибками на этом пути. Я много раз ошибался, прежде чем получил статус разработчика Gentoo, и это не помешало мне попытаться, несмотря на «плохие времена» 🙂.

      Насколько оригинально быть программистом сегодня?

      - Дело не в оригинальности, это необходимость сегодня, просто подумайте о следующем: 20 или 30 лет назад набор текста был необходимостью, многие задания предполагали, что вы знаете или, по крайней мере, можете это делать. Сегодня, зная, что Office необходим, практически нет работы, которая не ставила бы вас перед документами Office. Завтра, очень скоро программирование станет необходимостью. И это также применимо с личной точки зрения: знание того, что происходит в программах, которым вы доверяете такие важные вещи, как ваши деньги, здоровье, семья, для меня логично, потому что вы можете знать их ограничения, только если знаете, как они работают и для чего чтобы знать это, нужно уметь программировать.

      Какие проблемы я могу решить, которые другие еще не решили более эффективно?

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

      Зачем изучать язык программирования сегодня с такими хорошими и опытными программистами, которые уже существуют?

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

      А что мне программировать?

      -Это, пожалуй, самый сложный вопрос, но я попытаюсь привести вам пример poco, который недавно начал страдать от проблем с GNOME 24 и его подключением к Wayland, которые не позволяют программам, таким как Shutter, делать скриншоты. Это проблема для меня, потому что, когда я пишу свои статьи, мне нужно показать вам, что я говорю 🙂 немного поискав Я пришел к приложению GNOME Screenshot, несколько «минималистичному», если не сказать больше. Среди его функций есть одна - съемка области экрана, но что будет, если я сделал снимок плохо? Что ж, мне нужно выйти и повторно войти в программу, что-то определенно утомительное, кнопка с надписью «Retake» или что-то в этом роде позволяет мне сделать новый снимок, не выходя и не входя снова, мне поможет. Это небольшой проект по программированию, я никогда ничего не программировал в среде GNOME, поэтому, очевидно, мне нужно многому научиться, прежде чем отправлять свой «патч» с новой кнопкой, но по ходу я учусь программировать, и, если повезет, это которая когда он будет доступен всем, он будет полезен более чем одному.

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

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

      Привет и еще раз спасибо

      1.    никто сказал

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

        1.    КрисADR сказал

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

      2.    мвр1981 сказал

        Спасибо тебе. очень хорошие ответы.

    2.    Билл сказал

      Что ж, для тех, кто не собирается быть профессионалом в этой области, было бы необходимо посмотреть, в какой среде они работают, как для административных задач, так и для директив может быть интересно узнать, например, Python / Basic и уметь программировать макросы в офисных пакетах, таких как LibreOffice или MS Office. Бывают случаи, когда это может сэкономить много часов работы для вас или других сотрудников, которые вас окружают и просят их выполнить любую повторяющуюся задачу, вы можете создать панель управления, чтобы быстро рассчитать основные коэффициенты компании после подключения к базе данных его и выполнить некоторый SQL-запрос.
      Как и все, если вы знаете инструменты, которые всегда под рукой, вы можете подумать о том, как извлечь из них максимальную пользу. Не все придумано.

  7.   Marcelo сказал

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

  8.   Рикардо сказал

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

    1.    КрисADR сказал

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

  9.   Рубен Сальгадо сказал

    Отличная статья, помимо мотивирующей.

    1.    КрисADR сказал

      Очень любезно, большое спасибо Приветствую

  10.   Гонсало Мартинес сказал

    Программирование - это умение рассуждать и переводить эти рассуждения в инструкции.

    Два пояснения к статье:

    1) Исходя из моего почти 10-летнего опыта преподавания программирования, неважно, на каком языке вы изучаете, а как вы изучаете и насколько это сложно.

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

    Легче выучить что-то вроде Hello World на C или Pascal в качестве основы, чем с несколькими строками (PROGRAM в случае Pascal или #include В случае C) вы можете начать разработку алгоритма и кодировать программу с ее логикой напрямую, как в Java, которая сама по себе нуждается в классе, методе и некоторых других вещах, которые для новичка являются ненужной информационной перегрузкой, и это вполне можно проигнорировать и перейти к другим вещам, но это концепции, которые существуют, и, на мой взгляд, игнорирование вещей - не лучший способ учиться, особенно если язык вынуждает вас их использовать. Это как впервые начать тренироваться по стрельбе из М-16 и месяцами стрелять в полуавтоматическом режиме, держа рукоять двумя руками, как из пистолета.

    2) Будет ли язык интерпретирован или компилирован, зависит от его реализации, а не от самого языка. Например, если используется Python, для веб-приложения, использующего wsgi (либо mod_wsgi в apache, либо uwsgi для Nginx), код python компилируется при запуске соответствующего модуля, генерируя файлы .pyc

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

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

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

    1.    КрисADR сказал

      Привет, Гонсало, спасибо, что поделился,

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

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

      Еще раз большое спасибо, привет.

      1.    Гонсало Мартинес сказал

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

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

        1.    КрисADR сказал

          Спасибо за разъяснение, приму это к сведению, когда вернусь к теме. Ура

  11.   Ares сказал

    Какой язык вы порекомендуете для серверной части, учитывая, что php вышел из моды?
    То же и с базами данных, не знаю, будет ли что-то лучше и современнее mySQL.

    1.    КрисADR сказал

      PHP не вышел из моды ... У каждого языка есть свой жизненный цикл, и php, безусловно, уже входит в категорию "зрелых", что делает его полезным на уровне бизнеса, где стабильность превыше всего ... Как и в некоторых банках, где он все еще разрабатывается на java, который более "зрелый", чем php, и, безусловно, имеет своих последователей и недоброжелателей ... И не говоря уже о COBOL ...

      Если вы ищете единообразия и современности, javascript становится одним из фаворитов так называемых «разработчиков полного стека», хотя парадигма ruby ​​или «простота» python также являются хорошими примерами…. Даже perl может быть вариантом в зависимости от потребностей 🙂

      В настоящее время ORM (объектно-реляционные преобразователи) приобретают все большее значение с точки зрения управления реляционными данными. Это идет от синтаксиса SQL к обработке классов и атрибутов ... Почти все языки (если не все) обрабатывают некоторые ORM.

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

      Надеюсь, это вам поможет, привет

      1.    Ares сказал

        Спасибо, я это проверю.

      2.    Ares сказал

        Я забыл.

        Что вы мне посоветуете для работы с JAVA в Linux ?.
        Если можно лучше различать бесплатные и закрытые.

        1.    КрисADR сказал

          Eclipse и NetBeans имеют открытый исходный код, я не уверен, есть ли какое-либо программное обеспечение, являющееся чисто бесплатным. У меня есть привычка использовать vim, потому что иногда объем кода делает использование всей IDE медленным и склонным к ошибкам выполнения. Привет 🙂

        2.    Паульзета сказал

          Для работы с java в Linux я использую IntelliJ, рекомендую вам.

          1.    КрисADR сказал

            PS, IntelliJ - проприетарное ПО 🙂

  12.   je сказал

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

    1.    Гонсало Мартинес сказал

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