첫 번째 프로그래밍 언어 선택

확실히 이것은 프로그래밍에 대해 이야기 할 때 가장 많이받는 질문 중 하나입니다. 프로그래밍을 배우고 전 세계의 자유 소프트웨어 / 오픈 소스 커뮤니티에 기여하는 형태로 자유 지식을 되돌려주는 일련의 기사를 시작하려면이 기본에 대해 조금 어렵지만 대답해야합니다. 질문. 어떤 프로그래밍 언어를 배워야합니까?

약간의 역사

프로그래밍 언어를 이해하고 선택하기 시작하려면 먼저 해당 언어의 역사, 사용 및 기능, 시간이 지남에 따라 다양한 요구 사항을 해결하는 방법에 대해 알아야합니다.

기계어 (낮은 수준)

일반적으로 알려진 조립, 우리가 좀 더 일반적인 언어의 방언으로 정의 할 수있는 프로그래밍 언어입니다 ... 이것은 약간 복잡하게 들리지만 예를 들어 보겠습니다 ... 우리는 컴퓨팅의 보편적 언어가 전기, 이것은 궁극적으로 컴퓨터가 읽는 내용이 0시 1그래, 이걸 불러 보자 e컴퓨터 영어. 이 예에서는 스페인어가 기본 규칙이지만 우리가 잘 아는 바와 같이 라틴계가 사용하는 스페인어는 스페인에서 사용하는 스페인어와 동일하지 않으며, 그럼에도 페루의 스페인어는 아르헨티나 출신의 스페인어와 동일하지 않습니다. 분명히 우리 모두는 거의 같은 단어 (0시 1s), 그러나 사용 및 의미는 상황에 따라 다를 수 있습니다.

이것은 프로세서 수준에서 발생합니다. 우리가 말할 때 컴퓨팅 아키텍처, (amd64, intel, arm, ...) 우리는 그 방언을 참조합니다. 컴퓨터 스페인어. 이는 회사마다 순서와 의미를 자신의 방식으로 이해하기 때문에 흐름의 흐름이나 저장 될 순서와 같은 세부 사항이 다른 회사도 있기 때문입니다. 0시 1s.

이러한 프로그래밍 언어는 가능한 가장 낮은 수준의 프로그래밍에서 작동하기 때문에 매우 빠르지 만 아키텍처에 크게 의존하며 나머지보다 배우는 것이 조금 더 복잡합니다. 데이터를 변환하고 유용한 작업을 실행하려면 종종 더 광범위한 개념 기반이 필요합니다. 비디오 게임 애호가에게는 Assembly를 사용하여 게임을 프로그래밍 한 SEGA 콘솔이 그 예입니다. 당연히 그 당시에는 현재에 비해 최소한의 메모리 양이었고, 빠르고 가벼운 프로그램을 만들 수있는 언어를 마스터해야했습니다.

고급 언어

이 큰 그룹은 이후에 나온 언어를 숙고합니다. 조립. 이식 가능한 코드를 얻어야 할 필요성으로 인해 컴파일. 이 중 가장 먼저 활용 한 것은 C 였는데, 70 년대부터 운영 체제 수준에서 프로그래밍을 지배 해 왔습니다.

컴파일 된 언어

제가 언급 한 내용의 실제 예를 보겠습니다. 한 줄의 코드를 인쇄하는 매우 간단한 C 언어 프로그램을 살펴 보겠습니다.

개인적인. 크리스토퍼 디아즈 리베로 스

컴파일 후 다음과 같이됩니다.

자신의 디자인 : Christopher Díaz Riveros

하지만 이제 어셈블리 코드에서 동일한 결과를 복제하기 위해 작성해야하는 내용을 살펴 보겠습니다.

개인적인. 크리스토퍼 디아즈 리베로 스

이것은 3 줄의 코드를 번역 한 것입니다. simple.c, 파일 simple.s 명령을 사용하여 생성됩니다 gcc -S simple.c 프로세서가 방언으로 이해할 수있는 것입니다. 조립. 분명히 다음으로 구성된 실행 파일을 만들기 위해 0시 1s 파일을 처리해야합니다. simple.s 우리 시스템의 공유 라이브러리와 연결합니다. 이것은 어셈블러 (as) 및 접속 용 커넥터 (ld).

컴파일 된 언어는 저수준 언어에 비해 큰 이점을 제공합니다. 휴대용. 이식성은 각 아키텍처에 대해 특정 코드를 생성 할 필요없이 다른 프로세서에서 실행할 수있는 코드를 제공합니다. 또 다른 명백한 장점은 코드를 읽고 쓸 때 사용하는 단순성입니다. 주요 단점 중에는 다음과 같은 유형의 언어에 비해 C가 제공하는 자유가 제어 방법을 모르는 경우 해로울 수 있기 때문에 복잡성이 높습니다. 그것은 확실히 총을 넘겨주는 것과 같습니다 , 경험 부족으로 사람이 총을 청소하려고 자신의 발을 쏘는 경우가 발생할 수 있습니다.

통역 언어

이 그룹에는 매우 다양한 언어가 있습니다. 가장 중요한 언어 중에는 Python, Ruby, Javascript, PHP 등이 있습니다.이 언어의 기본 아이디어는 프로그램을 빠르게 만들고 실행할 수있는 방법을 제공하는 것입니다. , 이것은 많은 어려운 프로세스가 인터프리터에서 수행되고 논리 프로그래밍이 코드에서 구현되기 때문입니다. 위의 동일한 예제를 살펴 보지만 이번에는 Python으로 작성되었습니다.

개인적인. 크리스토퍼 디아즈 리베로 스

가장 눈에 띄는 것 중 첫 번째 줄은 인터프리터 (애플리케이션을 실행할 프로그램)를 호출하는 역할을하고 후속 코드는 모든 무거운 작업이 수행되기 때문에 C 버전보다 "간단"하다는 것을 알 수 있습니다. 통역사에.

개인적인. 크리스토퍼 디아즈 리베로 스

해석 된 언어는 더 엄격한 보안 제어 (최고도 실수를 할 수 있기 때문에 완벽하지 않다는 점에 유의)를 가지고 있기 때문에 개발자에게 더 높은 보안 계층을 제공하며, 우리는 더 이상 깨닫지 못한 채 무기를 발사 할 위험을 겪지 않습니다. 첫 번째 시도에서 인터프리터가 경고를 발생시키고 실행이 취소되기 때문입니다. 프로그램을 실행할 때 가장 큰 단점은 이진 프로그램보다 느리기 때문에 분명하게 나타납니다. 이는 코드가 제대로 작동하는지 확인할 수있는 처리량이 많기 때문입니다. 프로그램에 매우 짧은 기한이 필요하지 않으면 차이가 눈에 띄지 않을 수 있지만 초당 수천 또는 수백만 개의 데이터에 대해 이야기하는 경우 그 차이는 컴파일 된 언어에서 기하 급수적으로 눈에 띄게됩니다.

타자

이것은 프로그래밍 언어의 특징입니다. Fuertemente 약하게 입력했습니다. 메모리가 프로그램에 저장되는 방식을 이해하는 것이 필요하고 궁금하기 때문에이 주제를 다른 게시물로 남겨 두겠습니다.하지만 지금은 구분 만하면됩니다. 강력하게 입력 된 언어는 변수 또는 상수에 대해 작업 할 데이터 유형입니다. 약하게 유형은 변환을 수행 할 수 있으므로 절대적인 모든 것은 언어가 뒤 따르는 변환 계층 구조에 따라 달라집니다. (지금 이해하지 못해도 문제 없습니다. 나중에 남겨 두겠습니다)

패러다임

GNU / Linux 세계의 모든 것과 마찬가지로 프로그래밍 언어는 패러다임에 따라 기반을두고 있으며 그 주위에 커뮤니티가 생성됩니다. 예를 들어 우리는 파이썬 재단 o 루비 o PHP o Bash (이 경우 GNU 커뮤니티). 제가하고 싶은 것은 각자가 가지고있는 많은 장단점을 표현할 수 없다는 것입니다.하지만 무료 프로그래밍 언어가있는 곳에 배우고 참여할 수있는 커뮤니티가 있다는 것을 말씀 드릴 수 있습니다. 모든 언어 통역사가 C 또는 일부 유사 파생어로 작성되지는 않았더라도 많은 경우에 언급 할 가치가 있으며, 그들의 개발은 일반적으로 소수의 커뮤니티 그룹에 의해 수행됩니다. 모든 언어 사용자에게 영향을 미칠 결정. C의 경우처럼 언어의 올바른 개발을 보장하기 위해 기관을 구성 할 수도 있습니다.

어느 것을 선택해야합니까?

우리는 이미 언어에 관해 충분히 이야기했고 아직 가장 중요한 것에 대해서는 대답하지 않았습니다  . 그러나 나는 이 작은 기사를 검토한 후에 당신에게 어떤 언어를 선택해야 할지 말할 필요가 없기를 바랍니다. 왜냐하면 이 정보를 사용하면 당신이 호기심을 갖게 하는 언어를 찾을 수 있기 때문입니다. 물론 언어로 프로그래밍하는 법을 배우고 싶다면 조립 어떤 기능을 갖추기까지는 오랜 시간이 걸리며, 컴파일 된 언어를 선택하면 시간이 크게 단축됩니다. * NIX 시스템에서 이식성을 갖는 것 외에도 동일한 시스템의 작동에 관한 정보를 배울 수 있습니다. C 또는 파생 상품과 접촉하면 어떤 식 으로든 운영 체제가 일반적인 방식으로 작동하는 방식을 배울 수 있습니다. 마지막으로, 가볍고 많은 것을 이해할 필요없이 많은 것을 할 수있는 것을 배우고 싶다면, 통역 언어는 프로그래밍 기술을 배우고 개발하는 재미있는 방법입니다.

흥미로운 것을 배우십시오

이것이 제가 드릴 수있는 최고의 조언입니다. 무언가를 배우고 싶다면 먼저 흥미로운 것을 찾아야합니다. 그렇지 않으면 프로그래밍 언어의 일반적인 학습 곡선을 극복하기가 매우 어려울 것입니다. 시스템을 관리한다고 가정 해 보겠습니다.이 경우 이상적인 언어를 배워야 할 수 있습니다. 스크립팅 (해석), 여기에는 Perl, Python, Bash 등이 있습니다 ... 아마도 게임 일 수도 있고 원하는 게임 유형에 따라 Javascript, Lua, C ++와 같은 언어로 된 많은 프로젝트가 있습니다. 재생합니다. 보시다시피 C, Python, Perl이 있기 때문에 시스템 수준 도구를 만들고 싶을 수도 있습니다. 의 다목적 언어 이들 대부분에서.

프로젝트 시작

이것은 당신이 다음 컴파일러 또는 심지어 다음 프로그래밍 언어를 만드는 것을 의미하지 않습니다. 프로젝트는 당신이 좋아하는 프로그램의 작은 버그를 수정하거나 문서를 개선하는 데 도움이 될 수 있습니다. 왜 문서화인가? 소프트웨어의 작동 방식을 배우는 것보다 문서를 읽고 작성하는 것보다 더 좋은 방법이 없기 때문입니다. 왜냐하면 소스 코드 다음에 프로그램에 대해 찾을 수있는 가장 큰 정보 소스이기 때문입니다. 또 다른 순간에 우리는 프로젝트의 코드를 읽고 그들이 획득 한 기능과 가치를 이해하는 방법을 보게 될 것입니다.

여기에와 주셔서 감사합니다. 항상 그렇듯이 귀하의 의견은 더 나은 콘텐츠를 생성하고 어디에 집중해야하는지 아는 데 도움이됩니다. 인사말.