JavaRush /Java Blog /Random-KO /프로그래밍 언어 선택

프로그래밍 언어 선택

Random-KO 그룹에 게시되었습니다
저는 학교 컴퓨터 과학 수업에서 프로그래밍을 처음 접했습니다. 이것은 n진수 체계의 원리에 대한 지루한 설명이었습니다. 글쎄요, 테스트로 저는 제 웹사이트를 직접 작성해야 했습니다. 그러다 보니 세상에 더 이상 지루한 활동은 없는 것 같았습니다. 내가 얼마나 틀렸는가! 불행하게도 학교 컴퓨터 과학 커리큘럼은 IT 작업에 대한 완전한 그림을 제공하지 않으며 프로그래밍 언어를 선택하는 방법도 명확하지 않습니다. 프로그래밍 언어 선택 - 1초보자는 "어떤 프로그래밍 언어를 배워야 할지"라는 질문을 하기 전에 어떤 언어가 존재하고 그 차이점이 무엇인지 숙지해야 합니다.

진입 임계값: 높음, 낮음, 중간

프로그래머들 사이에서는 "진입 임계값"에 대해 자주 들을 수 있습니다. 이는 개인 "후배"가 첫 번째 진지한 프로그램을 작성하고 직업을 찾기에 충분한 수준으로 프로그래밍 언어를 마스터하는 데 필요한 노력의 양을 반영하는 개념입니다. "진입 임계값"은 다음과 같은 지식으로 구성됩니다.
  • 언어의 구문과 뉘앙스의 특징;
  • 도서관;
  • 알고리즘과 데이터 구조.
사실 엑셀로 작업하는 것조차 일종의 프로그래밍이라고 할 수 있습니다. 그런데 이 친숙한 오피스 프로그램은 보기만큼 간단하지 않습니다. 하나는 진입 기준이 테이블을 작성하는 능력이고 다른 하나는 복잡한 수식과 매크로에 대한 지식입니다. 어쨌든 이 임계값은 작습니다. 다음은 준언어(예: 1C 프로그래밍)입니다. 그런 다음 배우기 가장 쉬운 언어: 예: PHP . 다음은 메모리와 수동 상호 작용이 필요하지 않은 기본(일반적으로 영어에서 파생됨) 구문을 사용하는 언어입니다(예: Java , JS ) . 그런 다음 C , C++ 와 같이 메모리, 데이터 구조 및 알고리즘을 매우 신중하게 처리해야 하는 언어가 있습니다 . 젊은 다중 패러다임 언어는 아마도 진입 장벽이 가장 높을 것입니다. 왜냐하면 이를 마스터하려면 다른 프로그래밍 언어(예: Scala) 에서 두 마리 이상의 개를 먹어야 하기 때문입니다 . 하지만 우선 언어를 선택할 때 웹, 기업, 데스크톱 또는 모바일 애플리케이션 개발 등 다음에 무엇을 하고 싶은지 결정해야 합니다.

웹인가, 웹이 아닌가?

편물

웹 프로그래머는 프론트엔드 개발자 와 백엔드 개발자 로 나눌 수 있습니다 . 이 용어가 무엇을 의미하는지 이해하는 것이 좋습니다. "프런트엔드" 개발자는 소위 클라이언트 측, 즉 사용자가 보게 될 부분을 다룹니다. "백엔드"는 서비스의 소프트웨어 및 하드웨어 부분으로, 서버에서 실행됩니다. 어떤 프로그래밍 언어를 선택할지 결정하는 프런트엔드 개발자 에게 필수품은 JavaScript 와 해당 프레임워크(Angular JS, React 등)입니다. JS 방언은 상위 언어만큼 인기가 없지만 CoffeeScript, TypeScript와 같이 유용할 수도 있습니다. JScript, VBScript가 있기 전에는 flash AS도 있는데 공룡만 기억하네요 =) 게다가 HTML , CSS 도 이해해야 합니다 .
프로그래밍 언어 선택 - 2
많은 초보자들은 JavaScript와 Java가 거의 같은 것이라고 생각하므로 이러한 언어를 혼동해서는 안됩니다. JS는 "LiveScript"라고 불렸으며 "Java"라는 단어의 인기로 인해 현재 이름을 갖게 되었습니다. 웹 백엔드 에는 PHP, Python, Ruby, Pearl, Java가 적합합니다 . 여기서는 PHP 에 주목하고 싶습니다 . 나중에 다른 언어에 대해 이야기하겠습니다. 배우기 가장 쉬운 언어 중 하나이며 진입 임계 값이 낮습니다. 친숙한 웹 개발자를 대상으로 한 설문 조사에 따르면 Ruby는 느리지만 확실하게 인기를 얻고 있습니다. 간결함과 아름다움으로 사랑받고 있습니다.

웹 외(엔터프라이즈, 데스크톱, 모바일)

저는 이러한 프로그래밍 언어를 이렇게 이상한 이름을 가진 카테고리로 구체적으로 분류했습니다. 이들 중 대부분은 기업, 데스크탑, 심지어 모바일 애플리케이션을 작성하는 데 사용될 수 있습니다. 이해하기 쉬운 OOLP인 Python은 최근 기계 학습 의 발전으로 인해 엄청난 인기를 얻었습니다 . Python의 지지자들은 널리 Python을 사용합니다. ML은 IT에서 상당히 젊은 분야이고, 이미 첫 결실을 맺었지만 프로그래밍 언어를 선택할 때 이 업계에 뛰어들려고 서두르지는 않을 것입니다. 첫째, 수학을 아주 잘해야 합니다. 둘째, 인기의 물결은 "블록체인"이나 "나노기술"과 같은 방향으로 진행될 수 있습니다. 또한, 기억하시겠지만 Python은 웹 개발에 사용됩니다. C++ : 클래식, 모든 것이 "플러스"를 기반으로 구축되었습니다. 이 언어는 모든 인기 있는 OOLP의 조상이었으며 초보자는 반드시 주의를 기울여야 합니다. 많은 인기 있는 응용 프로그램이 이를 기반으로 합니다. 그러나 "발에 총을 쏘는" 확률이 높고 이해하기 어려운 구문은 초보자가 프로그래밍의 마스토돈을 마스터할 가능성을 무효화합니다. Kotlin - 멋쟁이를 위한 Java - OOP와 함수형 프로그래밍의 미친 혼합입니다. 최근에는 Java에서 Kotlin으로 전환한 숙련된 개발자가 생산성을 크게 향상시켜 인기가 높습니다. 숙련된 개발자라면 이 언어에 빨리 익숙해질 것입니다. 그런데 Scala에도 동일하게 적용되지만 Android에서는 Kotlin이 인기가 있습니다. Java는 초보자도 배우기 쉽습니다. 포함하여 JavaRush 덕분에 프로그래밍 언어를 선택하는 방법을 이해했습니다. =) Java 구문은 명확하며 "발에 총을 쏘는" 가능성이 있지만 중요하지는 않습니다.

OOP 또는 POP?

절차적 접근

절차 지향 접근 방식에는 특정 범위의 문제를 효과적으로 해결하기 위해 하나의 전체로 조합할 수 있는 순차적 명령문으로 구성된 프로그램을 작성하는 것이 포함됩니다. 이러한 언어에는 C , PureBasicPascal이 포함됩니다 . 고등학생과 중학생에게 낙담을 가져오는 것과 같은 것입니다. 상대적으로 젊은 GO 도 있습니다 . 그러나 절차적 언어에 대한 친숙함은 잠재적인 개발자에게 매우 유용합니다. 나에게 절차적 언어에 대한 몰입은 Mathematica 시스템(Wolfram) 및 대학 연구 활동과 관련이 있습니다. 프로그램 시작부터 끝까지 선형적으로 이동하는 올바른 알고리즘 접근 방식과 간단한 절차 덕분에 현대 이론 물리학과 관련된 값을 계산할 수 있었습니다. 때때로 스스로 계산하는 것보다 코드를 작성하는 것이 더 쉽다는 것을 이해하기 시작한 것은 이러한 "순차적" 언어 덕분입니다. PPP를 공부하면 고용주가 채용할 때 거의 항상 후보자에게서 보고 싶어하는 좋은 알고리즘 교육이 제공됩니다. IT의 모든 것과 모든 사람의 기초는 절차적 언어를 기반으로 구축되므로 이를 과소평가하지 마십시오. 그런데 어떤 프로그래밍 언어를 선택하여 학습할지 결정하는 초보자는 멀티스레딩이 OOP의 독점 특권이라고 생각하는 경우가 많습니다. 이것은 잘못된 것입니다. 절차적 프로그래밍 언어를 사용하면 병렬 계산도 수행할 수 있습니다.
프로그래밍 언어 선택 - 3

객체 지향 접근 방식

절차적 언어로 시작한 사람들은 대부분 수학, 알고리즘 및 데이터 구조에 대한 좋은 지식을 가지고 있습니다(이는 기술 대학에서 이러한 지식 영역을 강조하기 때문입니다). 그러나 현대 현실에서 성공적인 프로그래머는 프로그래밍에 대한 또 다른 접근 방식인 객체 지향을 잘 익힌 사람들인 경우가 많습니다. OOP 이데올로기는 진정한 글로벌 시스템 구축을 가능하게 합니다. 이 접근 방식의 특징은 현실 세계와의 유사성입니다.
  • 다양한 객체가 서로 상호 작용하고 서로 독립적으로 존재합니다.
  • 개체에는 계층 구조가 있으며 조상의 동작을 채택하거나 변경할 수 있습니다.
  • 추상적인 개념으로 작업할 수 있지만 실제로 존재하는 개체만 상호 작용할 수 있습니다.

절차지향 언어는 특정 문제를 해결하기 위한 도구입니다. 그리고 작업이 사소한 변경이라도 발생했다면 모든 알고리즘을 다시 작성하는 데 시간과 노력을 소비해야 할 가능성이 높습니다.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    가장 광범위한 문서 기반: 공식 Oracle 문서, 교육 포털, 지속적으로 개발되는 커뮤니티. 개발 중에 발생하는 대부분의 질문에 대한 답변은 몇 분 안에 찾을 수 있으며, 가장 중요한 것은 검색 엔진에 무엇을 입력할지 이해하는 것입니다 =)

  3. 인기.

    Java는 세계에서 가장 인기 있는 프로그래밍 언어입니다. 위에서 언급한 Android 및 웹 개발자 외에도 거의 모든 초보 기업 개발자가 Java로 글을 작성합니다. Enterprise는 대기업의 요구에 필요한 자체 개발입니다.

    매년 증오자들은 "Java의 죽음"을 예측하며 " 오라클은 Java 지원을 중단할 것이며 일반적으로 당신은 말도 안되는 일을 하고 있습니다 ."라고 말합니다. 이건 틀렸어! Java의 새 버전은 6개월마다 출시될 예정입니다. 최신 버전의 가장 중요한 혁신 사항과 기능은 여기에서 읽을 수 있습니다 .

    나에게 있어 Java 8의 람다는 새 버전은 말할 것도 없고 혁명이자 발견이었습니다! 지금 저는 "역행" 프로젝트를 진행하고 있기 때문에 혁신에 대해 자세히 조사하지는 않지만 Java가 계속 살아 있다는 사실은 사실입니다.

    프로그래밍 언어 선택 - 4
  4. 기계적 인조 인간.

    Android는 지난 4년 동안 휴대폰 시장의 80% 이상을 자신 있게 점유해 왔으며 TV, 미디어 플레이어, 심지어 자동차의 미디어 시스템까지 이 운영 체제에서 작동합니다. 그리고 이 OS의 개발은 주로 Java로 진행됩니다. 어떤 전망이 열리고 있는지 상상해 보십시오. Android 개발자로 취직하면서 관심이 생겼습니다. 내가 개발하는 제품의 비용은 얼마입니까? 연간 가격은 약 5달러인 것으로 나타났습니다. 합리적인 질문이 생겼습니다. 이 사무실, 급여, 쿠키, 테니스 테이블, 로봇 및 기타 "좋은 것들"에 대한 자금은 어디서 나왔습니까? 수량의 문제입니다. 우리 애플리케이션에는 2천만 명의 사용자가 있습니다.

  5. 급여.

    그리고 후식으로는 Java 개발자의 급여가 업계 최고 수준입니다. 당신은 특정한 목적, 즉 좋은 직업을 얻기 위해 프로그래밍을 배우게 될 것입니다.

프로그래밍 언어의 인기

프로그래밍 언어를 선택할 때 학습의 궁극적인 목표인 첫 직업을 구하는 것에 대해 생각해야 합니다. 다양한 언어의 인기를 평가하기 위해 인기 채용 포털 에 가서 모스크바에 대한 다양한 요청에 대한 공석 수를 살펴보기 시작했습니다. 아래에서 결과를 볼 수 있습니다.
자바: 277
파이썬: 227
PHP: 188
씨#: 147
C++: 131
루비: 40
스칼라: 24
코틀린: 20
최근 인기를 끌고 있는 Python조차도 Java를 앞서지 못했습니다. 그러나 이는 특정 도시, 특정 날짜 등 주관적인 데이터입니다. 공식적인 출처가 있으니 살펴보겠습니다. TIOBE 에 따르면 2018년 10월 현재 Java가 1위를 차지하고 있습니다. PYPL 순위 에서 Java는 JS보다 훨씬 앞서서 "유행적인" Python과 경쟁하는 2위를 차지했습니다.

결과

프로그래밍 언어를 선택할 때 초보자가 주의해야 할 사항은 다음과 같습니다.
  • 인기(Java가 지속적으로 선두 위치를 차지함)
  • 진입 기준(Java의 경우 - 평균: 고용주가 요구하는 역량 범위가 상당히 넓음)
  • 사용 가능한 자료(러시아어에는 JavaRush와 유사한 포털이 없으므로 손바닥이 누구인지 추측합니다 =))
  • 적용 분야: 프로그래밍 언어를 사용할 수 있는 산업이 많을수록 시장에는 더 많은 전문가가 필요합니다. 이미 크로스 플랫폼에 대해 이야기했지만 반복해도 질리지 않을 것입니다.
물론, 어디에나 함정이 있지만, 걷는 사람이 길을 마스터할 것입니다. 선택할 프로그래밍 언어를 결정할 수 있는 사람은 오직 당신뿐입니다 . 공부에 행운을 빕니다!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION