CodeGym /Java Blog /무작위의 /프로그래밍 언어 선택
John Squirrels
레벨 41
San Francisco

프로그래밍 언어 선택

무작위의 그룹에 게시되었습니다
저는 학교에서 컴퓨터 과학에 대한 수업에서 프로그래밍을 처음 접했습니다. 이것은 n항 숫자 시스템이 작동하는 방식에 대한 지루한 설명으로 구성되었습니다. 그리고 물론 자신의 웹사이트를 작성해야 하는 테스트도 있었습니다. 그 당시에는 더 지루한 직업이 없을 것 같았습니다. 내가 얼마나 틀렸어! 불행하게도 고등학교 컴퓨터 과학 프로그램은 IT 작업에 대한 완전한 그림을 제공하지 않으며 프로그래밍 언어를 선택하는 방법을 설명하지 않습니다. 초보자는 "어떤 프로그래밍 언어를 배워야 합니까?"라고 묻기 전에 어떤 언어가 있고 서로 어떻게 다른지 숙지해야 합니다. 프로그래밍 언어 선택 - 1

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

프로그래머는 종종 "진입 임계값"에 대해 이야기합니다. 이는 주어진 "주니어 개발자"가 자신의 첫 번째 진지한 프로그램을 작성하고 직업을 찾을 수 있을 만큼 충분히 프로그래밍 언어를 마스터하는 데 필요한 노력의 양을 반영하는 개념입니다. "진입 임계값"은 다음에 대한 지식으로 구성됩니다.
  • 구문 특성 및 언어의 뉘앙스
  • 도서관
  • 알고리즘 및 데이터 구조.
Excel에서 작업하는 것은 일종의 프로그래밍이라고도 할 수 있습니다. 그건 그렇고, 이 친숙한 사무용 프로그램은 보이는 것처럼 간단하지 않습니다. 한 사용자의 경우 항목 임계값은 테이블을 만드는 기능일 수 있습니다. 다른 하나는 복잡한 수식과 매크로에 대한 지식일 수 있습니다. 두 경우 모두 이 임계값은 작습니다. 다음은 1C 프로그래밍 과 같은 유사 언어입니다 . 그런 다음 배우기에 가장 간단한 언어가 있습니다(예: PHP) . 또한 JavaJS 와 같이 메모리 관리를 처리할 필요가 없는 기본 구문(일반적으로 영어에서 파생됨)을 사용하는 언어가 있습니다 . 그런 다음 메모리, 데이터 구조 및 알고리즘을 매우 신중하게 처리해야 하는 언어가 있습니다(예: CC++ . 예를 들어 Scala와 같은 젊은 다중 패러다임 언어는 아마도 가장 높은 진입 임계값을 가지고 있을 것입니다. 그 언어를 마스터하려면 수많은 프로그래밍 패러다임에 깊이 빠져들어야 하기 때문입니다. 그러나 언어를 선택하기 전에 웹, 엔터프라이즈, 데스크톱 또는 모바일 장치 용 개발과 같이 다음에 수행할 작업을 결정해야 합니다 .

웹이냐 웹이냐?

편물

웹 프로그래머는 프론트엔드 개발자 와 백엔드 개발자 로 나눌 수 있습니다 . 이러한 용어의 의미를 이해해야 합니다. 프런트엔드 개발자는 클라이언트 측, 즉 사용자에게 표시되는 부분에 관여합니다. "백엔드"는 서버에서 실행되는 서비스의 일부인 데이터 조작 및 저장에 관한 것입니다. 배울 프로그래밍 언어를 결정하는 프런트엔드 개발자 에게는 JavaScript 및 JavaScript 프레임워크(Angular JS, React 등)가 필수적입니다. CoffeeScript 및 TypeScript와 같은 JS 방언은 부모만큼 인기가 없지만 유용할 수도 있습니다. 플래쉬 AS도 있고 예전에 JScript, VBScript도 있었는데 이건 공룡만 기억함 =) 이 모든 것 외에도 HTML에 대한 이해가 필요하다그리고 CSS . 프로그래밍 언어 선택 - 2많은 초보자들은 JavaScript와 Java가 거의 같은 것이라고 생각합니다. 이 언어를 혼동하지 마십시오. JS는 이전에 "LiveScript"라고 불렸으며 "Java"라는 단어의 인기 때문에 현재 이름을 갖게 되었습니다. 웹 백엔드 개발자 의 경우 PHP, Python, Ruby, Perl 및 Java가 적합합니다. 여기서는 PHP에 초점을 맞추고 싶습니다(다른 언어에 대해서는 나중에 설명하겠습니다). PHP 는 배우기 가장 쉬운 언어 중 하나이며 진입 임계값이 낮습니다. 잘 알려진 웹 개발자의 설문 조사에 따르면 Ruby는 느리지만 확실하게 인기를 얻고 있습니다. 간결함과 아름다움으로 사랑받고 있습니다.

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

다음 프로그래밍 언어를 이상한 이름으로 이 범주에 의도적으로 결합했습니다. 대부분을 사용하여 엔터프라이즈, 데스크탑 및 모바일 애플리케이션을 작성할 수 있습니다. Python은 이해하기 쉬운 객체 지향 프로그래밍 언어이며 최근 ML( 기계 학습 )의 성장으로 인해 엄청난 인기를 얻고 있습니다. ML 개발자는 Python을 광범위하게 사용합니다. MLIT 분야에서 상당히 새로운 분야이며 이미 결실을 맺는 것을 보았지만 프로그래밍 언어를 선택할 때 이 산업에 뛰어들지는 않을 것입니다. 첫째, 수학에 대한 탁월한 이해가 필요합니다. 둘째, 인기의 물결은 "블록체인"이나 "나노기술"과 같은 방식으로 지나갈 수 있습니다. 즉, Python이 웹 개발에 사용된다는 것을 기억할 수 있습니다. C++: 모든 것이 "plus-plus" 연산자를 기반으로 하는 고전적인 언어입니다. 이 언어는 인기 있는 모든 객체 지향 프로그래밍 언어의 조상이며 초보자는 반드시 주의를 기울여야 합니다. 많은 인기있는 응용 프로그램이 이를 사용하여 작성되었습니다. 그러나 "발에 총을 쏘는" 좋은 기회와 이해하기 어려운 구문은 초보자가 프로그래밍의 마스토돈을 마스터할 확률을 0으로 만듭니다. 코틀린힙스터를 위한 Java와 같은 은 OOP와 함수형 프로그래밍의 미친 혼합입니다. Java에서 Kotlin으로 전환하는 숙련된 개발자가 자신의 생산성을 크게 향상시킬 수 있다는 사실 때문에 최근 인기를 얻었습니다. 숙련된 개발자라면 이 프로그래밍 언어에 금방 익숙해질 것입니다. 그건 그렇고, Scala에도 동일하게 적용되지만 Kotlin은 Android 세계에서 인기가 있습니다. Java 는 초보자가 배우기 쉽습니다. 특히 CodeGym 의 도움으로 =) Java 구문을 이해할 수 있으며 "발에 총을 쏘는" 위험이 있지만 중요하지는 않습니다.

OOP 또는 POP?

절차적 접근

절차 중심 접근법은 일련의 특정 문제를 효과적으로 해결하기 위해 통일된 전체로 어셈블할 수 있는 순차적 명령문으로 구성된 프로그램 작성을 포함합니다. 이러한 언어에는 C , PureBasicPascal이 포함됩니다 . 즉, 고등학생과 대학생에게 절망을 안겨주는 언어들. 상대적으로 젊은 GO 도 있습니다.언어. 즉, 절차적 언어에 익숙해지면 잠재적인 개발자에게 매우 유용합니다. 절차적 언어에 대한 몰입은 Wolfram Mathematica 시스템 및 대학 연구와 함께 이루어졌습니다. 프로그램의 처음부터 끝까지 선형적으로 이동하는 적절한 알고리즘과 간단한 절차를 통해 현대 이론 물리학과 관련된 값을 계산할 수 있었습니다. 이 "순차적" 프로그래밍 언어는 때로는 수동으로 계산을 수행하는 코드를 작성하는 것이 더 쉽다는 것을 이해하는 데 도움이 됩니다. 학습 절차 지향 프로그래밍(POP)은 고용주가 거의 항상 구직자에게서 보고 싶어하는 좋은 알고리즘 교육을 제공합니다. 절대적으로 IT의 모든 것은 절차적 언어를 기반으로 구축되므로 과소평가하지 마십시오. 그런데, 배울 프로그래밍 언어를 결정하는 초보자는 종종 OOP 언어만 멀티스레딩을 지원한다고 생각합니다. 이것은 사실이 아닙니다. 절차적 프로그래밍 언어는 또한 병렬 계산을 허용합니다. 프로그래밍 언어 선택 - 3

객체 지향 접근법

절차적 언어로 시작한 사람들은 일반적으로 수학, 알고리즘 및 데이터 구조에 정통합니다(기술 대학이 이러한 영역을 강조하기 때문에). 그럼에도 불구하고 오늘날의 현실은 성공적인 프로그래머는 일반적으로 프로그래밍에 대한 다른 접근 방식인 객체 지향 패러다임을 마스터한 사람들이라는 것입니다. OOP 이데올로기를 사용하면 진정한 글로벌 시스템을 구축할 수 있습니다. 이 접근 방식의 특징은 실제 세계와의 유사성입니다.
  • 서로 다른 개체는 서로 상호 작용하고 서로 독립적으로 존재합니다.
  • 개체에는 계층 구조가 있으며 조상의 동작을 채택하거나 변경할 수 있습니다.
  • 추상적인 개념을 사용할 수 있지만 실제로 존재하는 개체만 상호 작용할 수 있습니다.

절차 지향 언어는 특정 문제를 해결하기 위한 도구입니다. 작업이 조금이라도 변경되면 모든 알고리즘을 다시 작성하는 데 시간과 노력을 들여야 할 것입니다.

신차와 중고차를 모두 판매하는 자동차 대리점을 설명하는 프로그램을 상상해 보십시오. 절차적 언어에서는 신차, 신차, 중고차, 중고트럭 등 각 엔터티에 대한 데이터의 입출력을 처리하는 함수를 정의해야 합니다. OOP는 무엇을 제공합니까? 객체 지향 접근 방식을 사용하면 모든 차량 유형이 공유하는 특성을 저장하는 Vehicle 기본 클래스를 정의하기만 하면 됩니다.

  • 만들다
  • 엔진 배기량
  • 마력
  • 년도
  • 신규 또는 중고
  • 가격

그리고 정보를 받아들이고 보내는 방법들. 그런 다음 Vehicle 클래스의 특성인 Car 및 Truck을 상속하는 개체를 만듭니다. 여기에는 입력/출력 방법뿐만 아니라 이러한 유형의 차량에 특별히 관련된 정보가 포함되어 있습니다.

갑자기 대리점의 경영진은 오토바이도 제공하여 라인업을 확장하기로 결정합니다. 절차적 접근 방식에서는 신규 및 중고 오토바이에 대한 모든 논리를 다시 만들어야 하지만 OOP 언어를 사용하면 Vehicle 슈퍼클래스의 모든 특성을 상속하고 오토바이 관련 개선 사항을 포함하는 새로운 Motorcycle 클래스를 간단하게 만들 수 있습니다.

다양한 차량을 추가하면 어떻게 될까요? 절차적 구현에는 OOP보다 더 많은 작업이 필요합니다. 또한 라인업이 클수록 개체와 관련된 작업이 적어집니다.

따라서 OOP는 데이터와 메서드를 단일 엔터티로 결합하고 통합된 개체로 작업할 수 있는 프로그래밍 스타일입니다. 엔터티는 계층 구조로 배열될 수 있으며 서로의 내부 구현 세부 정보를 조사하지 않고도 서로 상호 작용할 수 있습니다. OOP가 나에게 더 진보적인 접근 방식인 세 가지 이유를 지적하겠습니다.
  1. OOP에는 개별 모듈의 독립적인 개발이 포함되어 있어 프로그래머나 팀이 접촉 및 정보 교환의 방법과 경계를 선택할 수 있습니다.
  2. 작은 모듈로 분할된 코드는 모놀리식 프로시저보다 훨씬 읽기 쉽습니다. 결과적으로 외부인이 코드를 빠르게 이해할 수 있고 마찬가지로 필요한 경우 새 프로젝트에 참여할 수 있습니다.
  3. 한 클래스는 다른 클래스의 상호 작용에 영향을 주지 않고 변경할 수 있지만 이러한 변경은 자식 개체의 계층 구조에 영향을 줄 수 있습니다. 이 접근 방식을 마스터하면 프로그램을 확장하고 수정하는 것이 쉬워집니다.
하나의 접근 방식이 다른 접근 방식과 충돌하지 않지만 OOP는 여전히 계층 구조에서 더 높다는 점을 기억하십시오. 그렇다면 Java를 권장하는 이유는 무엇입니까? 다음과 같은 이유를 강조하겠습니다.
  1. 크로스 플랫폼.

    Java는 JVM(Java Virtual Machine) 덕분에 어디에서나 작동합니다. 이 언어의 주요 이점 중 하나는 크로스 플랫폼 특성입니다. 추가할 라이브러리나 특정 프로세서의 아키텍처에 대해 생각할 필요가 없습니다. "한 번 작성하면 어디든 실행됩니다."

  2. 선적 서류 비치.

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

  3. 인기.

    Java는 세계에서 가장 인기 있는 프로그래밍 언어입니다. 앞서 언급한 Android 및 웹 개발자 외에도 거의 모든 엔터프라이즈 개발자가 Java로 작성합니다. Enterprise는 대기업의 요구에 필요한 내부 기업 개발을 의미합니다.

    매년 싫어하는 사람들은 "자바의 죽음"을 예측합니다. 그들은 " 오라클이 지원을 중단할 것입니다. 당신은 완전히 시간을 낭비하고 있습니다. "라고 말합니다. 이것은 사실이 아닙니다! 그들은 6개월마다 새로운 버전의 Java를 출시할 것을 약속합니다.

    저에게 Java 8의 람다 표현식은 새 버전은 말할 것도 없고 혁신적이고 계시였습니다! 저는 현재 "레거시" 프로젝트를 진행 중이므로 최신 혁신을 탐구하지는 않지만 Java가 살아 있다는 것은 사실입니다.

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

    지난 4년 동안 Android는 지속적으로 휴대전화 시장의 80% 이상을 점유했습니다 . TV, 미디어 플레이어, 심지어 자동차 인포테인먼트 시스템까지 이 운영 체제에서 실행됩니다. 그리고 이 OS용 앱 개발은 주로 Java로 이루어집니다. 열리는 전망을 상상해보십시오. Android 개발자로 취직했을 때 내가 개발하는 제품의 가치가 얼마인지 궁금했습니다. 결과적으로 가격은 연간 약 $ 5였습니다. "그럼 이 사무실, 급여, 매점, 탁구대, 로봇 및 기타 특전을 위한 돈은 어디에서 오는가? 답은 볼륨에 있습니다. 우리 앱의 사용자는 2천만 명입니다.

  5. 급여.

    그리고 이제 금상첨화입니다. Java 개발자의 연봉은 업계 최고 수준입니다. 결국 당신은 특정 목적을 위해 프로그래밍을 공부할 계획입니다: 좋은 직장을 구하는 것입니다.

프로그래밍 언어의 인기

공식적인 정보 출처가 있으므로 살펴 보겠습니다. TIOBE 에 따르면 Java는 2019년 10월 현재 1위를 기록하고 있습니다 . PYPL 순위에서 Java는 2위로 JS를 훨씬 앞지르며 유행하는 Python과 경쟁합니다.

결론

초보자가 프로그래밍 언어를 선택할 때 주의해야 할 사항은 다음과 같습니다.
  • 대중성(Java가 지속적으로 선두 자리를 차지함)
  • 진입 임계값(Java의 경우 중간 수준: 고용주는 다소 광범위한 기술을 요구함)
  • 사용 가능한 자료(CodeGym에 오신 것을 환영합니다 =))
  • 응용 분야: 프로그래밍 언어가 사용되는 분야가 많을수록 시장에서 더 많은 전문가가 필요합니다. Java가 크로스 플랫폼 개발을 지원하는 방법에 대해 이미 언급했지만 반복해도 지치지 않습니다.
물론 모든 곳에 함정이 있지만 한 발짝 더 나아가는 사람이 앞으로 나아갑니다. 어떤 프로그래밍 언어를 선택할지는 당신만이 결정할 수 있습니다. 학습에 행운을 빕니다!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION