프로그래밍 언어 선택
회색 머리 남자의 조언
어떤 초보자가 매체에 "어떤 프로그래밍 언어가 가장 좋은가"라는 기사를 올리는 일이 이틀에 한 번씩 발생합니다. 이러한 계략에 일일이 답하는 대신 다음과 같이 설명하겠습니다.
당신은하지 않습니다
당신이 돈을 위해 거기에 있는 한 다른 누군가가 이미 당신을 위해 선택했습니다. 때로는 전임자일 수도 있고 대부분의 경우 귀하가 종사하는 산업입니다. 일단 일을 선택하면 주요 언어를 배우는 것과 더불어 잘 알려진 프레임워크 세트와 함께 잠재적인 현직자를 배우는 일에 직면하게 됩니다. 라이브러리 및 빌드 도구. 라이브러리를 선택하고, 프레임워크를 선택하고, 갑자기 빌드 파이프라인을 변경할 수 있습니다. 그러나 항상 실행 가능한 옵션이 매우 제한되어 있습니다.
대부분의 경우 새로운 언어는 단일 제품에 편승하여 회사에 진입합니다. CMS가 필요하십니까? PHP 개발자를 환영합니다. 사무 자동화, Microsoft Dynamics? C#은 이제 팀의 일부입니다. 그러나 제품 개발자가 선택했습니다.
TIOBE와 같은 지수는 언어의 인기를 반영하는 것이 아니라 제품, 산업 및 비즈니스 모델의 기복에 대한 프록시입니다.
당신은해서는 안됩니다
대부분의 회사에서 소프트웨어는 중요한 투자입니다. 즉, 총 소유 비용이 가장 중요합니다. 언어를 선택할 때마다 전체 프로젝트의 비용 구조를 정의합니다.
- 사용 가능한 개발자는 몇 명입니까? 비용은 얼마입니까? 어떤 종류의 과외가 제공되어야 합니까?
- 어떤 라이브러리와 프레임워크를 사용할 수 있고 비용은 얼마이며 서비스 계약을 제공합니까?
- 위험 완화는 어떻습니까? 도서관은 보안 검색의 일부입니까? 구현 중에 이국적인 요구 사항이 발생하는 경우 적합한 라이브러리를 찾을 수 있습니까?
- 전망은 무엇입니까? 프레임워크는 얼마나 오래 지원됩니까? 제품 수명이 다할 때까지 개발자를 찾을 수 있습니까?
당신은 할 수 없습니다
당신이 대박을 터뜨렸다고 가정해 봅시다. 당신의 고용주는 뜻밖의 행운이나 공황 상태에 빠져 덜 가본 길을 가고 싶어합니다. 그럼에도 불구하고 대부분의 경우 선택은 이미 이루어졌습니다.
프로젝트의 제약으로 인해 적합한 언어의 범위가 제한됩니다.
- 시작 시간, 메모리 공간, 처리량 및 대기 시간에 대한 엄격한 제한
- 배포 비용.
- 보안 고려 사항
- 허용된 대상 플랫폼에서의 가용성.
- 임베딩
- 상호 운용성. 동료가 JVM, CLR 또는 LLVM에서 작업합니까? 당신도 그렇게 해야 합니다.
- 여전히 자원이 제한되어 있습니다. 프레임워크가 없습니까? 표준 라이브러리가 없습니까? 가지마.
어설션 및 유형 시스템
지금까지 언어의 특징 자체는 중요하지 않았다는 것을 알 수 있습니다.
단일 언어 기능을 통한 생산성 향상은 과대평가되었습니다. 때때로 발생하지만 우리가 작성하는 대부분의 코드는 매우 지루하고 모든 언어로 수행할 수 있습니다. 상용구를 줄이면 초보자의 가독성이 높아지지만 그냥 훑어보는 전문가에게는 그렇게 많지 않습니다. 개발자가 충분히 빨리 입력하지 않았기 때문에 어떤 프로젝트도 지연되지 않았습니다.
주장은 다른 짐승입니다.
그 핵심은 간단한 거래입니다. 제약 조건을 적용하고 주장을 얻습니다. 여기에는 두 가지 주의 사항이 있습니다. 시행할 수 없다면 어설션은 가치가 없습니다. 어설션이 필요하지 않은 경우 제약 조건에 대해 신경쓰는 이유는 무엇입니까? 물론 대부분의 경우 더 큰 악을 더 작은 악과 교환할 뿐입니다.
현재 언어를 선택하여 얻을 수 있는 몇 가지 주요 주장만 있습니다.
- 메모리 안전: 가비지 수집, 차용
- null 관리: 명시적 null 가능성, null 검사 등
- 스레드 안전성: 트랜잭션 메모리, 원자적 연산, CCS, 액터 등
- 예외 처리: 관리되는 예외
- 불변성: 영속 객체 등
유형 시스템을 사용하여 주요 주장의 부분 구현을 생성할 수 있지만 대부분의 경우 심각한 제한과 가독성 손실이 있습니다.
그리고 유형 시스템에는 비용이 듭니다. 강력할수록 컴파일 및 바인드 단계가 더 오래 걸립니다. 극단적으로 종속 유형은 튜링 완전하며 이론적으로 컴파일을 중단하지 않는 프로그램으로 이어질 수 있습니다.
단기적으로는 런타임 타이핑이 있는 간단한 언어를 사용한 개발이 강력한 타이핑 시스템을 사용한 개발을 능가할 수 있습니다. 장기적으로 테스트의 필요성이 감소하면 항상 유형 시스템에 유리하게 기울게 됩니다.
언어를 선택할 수 있다면 감당할 수 있는 가장 강력한 유형 시스템을 선택하십시오.
당신의 모국어는 버려지는 언어입니다
프로그래밍을 배우는 것은 새로운 사고 방식을 배우는 것을 의미합니다. 이 과정에서 당신은 당신의 동기에 의존하고 먼 미래의 돈 더미에 대한 생각은 하지 않을 것입니다.
매머드가 아직 지구를 배회하던 시절에 우리 컴퓨터는 BASIC이라는 언어와 함께 제공되는 키보드가 볼트로 고정된 작은 상자였습니다. 그것은 단지 두 가지만 가능합니다. 그것은 상자에 딱 맞고 그것으로 작업하는 것은 즉각적인 만족을 의미했습니다. 코드가 거의 없고 상자에서 신호음이 울리거나 그래픽이 표시됩니다. BASIC으로 진지한 작업을 하면 고통의 세계에 빠지게 되지만 제2외국어와 제3외국어를 배울 수 있는 길을 열어주고 단순함을 위한 힘의 거래에 감사하게 만들었습니다.
요즘에는 주로 학습과 실험을 위한 많은 언어를 사용할 수 있습니다. 중요한 것은 현재 가지고 있는 가려움증을 긁어주는 것입니다. 게임 작성, 홈 오토메이션 수행, 물건 정리 등을 원합니다.
모국어를 관리하고 나면 어떤 산업에서 일하고 싶은지 결정합니다. 게임, 건강, 교육, 국방, 자동차 등. 이것은 초기 개발자 프로필, 배워야 할 언어 및 도구를 정의합니다. 산업 내에서 기술의 변화는 더 느리고 훨씬 더 예측 가능합니다. 귀하의 비즈니스 전문 지식은 최신 도구 체인에 대한 지식 부족보다 중요합니다. 전문화되지 않은 경우 구인 광고는 대부분 기술 전환으로 인해 새로 생성된 수요를 위한 것이므로 쥐 경주에 참가하는 것입니다. 일부는 이러한 환경에서 번창하지만 대부분은 지겨워합니다.
결론
IT는 앞으로도 계속 변화할 것입니다. AI와 낮은 코드/노코드가 역할을 할 것이며 보안이 중심이 됨에 따라 더 높은 코드 품질에 대한 수요가 증가할 것입니다. 따라서 언어, 프레임워크 및 도구가 변경될 것입니다. 그러나 대부분의 경우 그것은 우리의 선택이 아닙니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































