Разделы портала

Онлайн-тренинги

.
Какой язык программирования учить?
20.08.2020 00:00

Автор: Алан Ричардсон (Alan Richardson)
Оригинал статьи
Перевод: Ольга Алифанова

Краткое содержание: самое трудное – это стартовать в программировании: установить IDE, добавить зависимости, написать свой первый тест. Выбирайте любой язык, с которым вам кто-то может помочь, или для которого у вас есть обучающий материал. Переключиться на другой язык, если вы уже каким-то владеете, нетрудно, поэтому не волнуйтесь, что застрянете в каком-то языке – просто начните действовать.

Какой язык программирования учить?

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

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

Языки в целом-то одинаковы, если вы уже знаете хотя бы один.

Семейства

К примеру, мне комфортнее всего работать с Java, но так было не всегда.

Раньше я предпочитал, в хронологическом порядке:

  • ZX Basic
  • 68000 asm
  • C
  • Visual Basic
  • C++
  • Java

И по ходу дела я выучил JavaScript, C#, Fortran, Pascal, Cobol, Hope, Prolog, разнообразные Basic-и, Smalltalk, Miranda, Z80, Ruby, Python, Lisp, PHP, ML, и несколько других.

Языки в целом делятся на "семейства", и если вы владеете одним языком из семейства – вы легко выучите любого его родственника.

  • Ассемблерные - Z80, 68000
  • Функционально-ориентированные - C, Pascal, Fortran, Cobol
  • Функциональные - ML, Hope, Miranda
  • Символического кодирования - Prolog, Lisp
  • Объектно-ориентированные - Java, C++, JavaScript, C#, Python, Ruby, PHP, Pascal
  • Чистые объектно-ориентированные - Smalltalk

Я выдумал название "Функционально-ориентированные" для языков программирования, в которых исходно не было концепции объектов – в них, как правило, были структуры и адресные ссылки, позволяющие симулировать объекты (через создание структур с адресными ссылками на функции или другие структуры). Позднее объектно-ориентированные концепции были добавлены в Pascal, Fortran и Cobol, а затем –в поздние С-разновидности: C++, Objective С, и т. д.

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

Пример кода

Приведу быстрый пример кода.

Это пример использования WebDriver на  C#.

[Test]
public void Test1()
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://eviltester.github.io/synchole/");
driver.FindElement(By.LinkText("Collapseable Div")).Click();
driver.FindElement(By.CssSelector(".condense")).Click();
new WebDriverWait(driver, TimeSpan.FromSeconds(10)).
Until(ExpectedConditions.ElementToBeClickable(
By.Id("aboutlink"))).Click();
Assert.AreEqual("About The Sync Hole", driver.FindElement(By.TagName("h1")).Text);
driver.Close();
}
Тот же пример на Java.
@Test
public void test1()
{
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://eviltester.github.io/synchole/");
driver.findElement(By.linkText("Collapseable Div")).click();
driver.findElement(By.cssSelector(".condense")).click();
new WebDriverWait(driver, 10).
until(ExpectedConditions.elementToBeClickable(
By.id("aboutlink"))).click();
Assertions.assertEquals("About The Sync Hole", driver.findElement(By.tagName("h1")).getText());
driver.close();
}

Многие из малозаметных различий в именах методов устраняются автодополнением кода в IDE. Я, по сути, начинаю печатать – и вижу список имен методов, доступных для использования. Затем я со временем познаю нюансы языка.

C# предпочитает имена методов в верхнем регистре, в отличие от Java.

Приступая к работе

Самое сложное в изучении языка – это начать.

  • Как его установить?
  • Как добавить зависимости к проекту – к примеру, NUnit, Selenium, JUnit

Поэтому пройдитесь по серии инсталляционных видео для последней версии, и точное следование им поможет вам стартовать.

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

Поэтому … выбирайте язык, с которым вам смогут помочь.

Поэтому людям нравятся Ruby и Python – они проще на старте. Но как только вы начнете писать юнит-тесты, или работать с Selenium, HTTP или REST, вам понадобится добавить библиотеки – и это делается через системы управления зависимостями. И вот тогда все, как правило,  становится сложным.

Поэтому, если у вас есть такая возможность, найдите пример проекта для библиотеки в Github, скачайте код и разберитесь, как работает управление зависимостями.

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

Обсудить в форуме