제 생각에 사람들이 구어체로 "프로그래밍 언어"를 고려하는 것은 실제로 세 가지입니다.
- 언어 유형 및 구문
- 언어 IDE
- 언어에 사용 가능한 라이브러리
예를 들어 누군가가 토론에서 C #을 가져올 때 언어 구문에 대해 이야기하고 있다고 생각할 수 있지만 (1) 토론에 .Net 프레임 워크가 포함될 것이라고 95 % 확신합니다 (3). 새로운 언어를 디자인하지 않는다면 (1)을 무시하고 (2)와 (3)을 무시하는 것은 어렵고 무의미합니다. IDE와 표준 라이브러리는 특정 도구 사용 경험에 직접적인 영향을 미치는 "편안한 요소"이기 때문입니다.
지난 몇 년간 Google Code Jam에도 참여했습니다. 처음으로 C ++을 선택했습니다. 입력을 읽는 데 도움이되기 때문입니다. 예를 들어 C ++의 표준 입력에서 3 개의 정수를 읽는 방법은 다음과 같습니다.
int n, h, w;
cin >> n >> h >> w;
C #에서 다음과 같이 보일 것입니다.
int n, h, w;
string[] tokens = Console.ReadLine().Split(' ');
n = int.Parse(tokens[0]);
h = int.Parse(tokens[1]);
w = int.Parse(tokens[2]);
단순한 기능을 위해서는 훨씬 더 정신적 인 오버 헤드입니다. 여러 줄로 입력하면 C #에서 상황이 훨씬 복잡해집니다. 어쩌면 나는 그 당시 더 나은 방법을 찾지 못했을 것입니다. 어쨌든, 나는 라운드가 끝나기 전에 수정할 수 없었던 버그가 있었기 때문에 첫 번째 라운드를 통과하지 못했습니다. 아이러니하게도 입력 판독 방법으로 버그가 난독 화되었습니다. 문제는 간단했습니다. 입력에 32 비트 정수에 비해 너무 큰 숫자가 포함되었습니다. C #에서는 int.Parse(string)
예외가 발생하지만 C ++에서는 파일 입력 스트림이 특정 오류 플래그를 설정하고 의심의 여지가없는 개발자가 문제를 인식하지 못하도록 자동으로 실패합니다.
두 예제 모두 언어 구문 대신 라이브러리가 사용 된 방식을 보여줍니다. 첫 번째는 자세한 정보를 보여주고 다른 하나는 신뢰성을 보여줍니다. 많은 라이브러리는 여러 언어로 포팅되며 일부 언어는 특별히 빌드되지 않은 라이브러리를 사용할 수 있습니다 (C 라이브러리를 사용하는 Python에 대한 @vartec의 답변 참조).
이것을 마무리하려면 올바른 알고리즘을 아는 것이 도움이됩니다. 코딩 경쟁에서, 특히 실행 시간 및 메모리와 같은 리소스가 의도적으로 제한 될 때 중요합니다. 응용 프로그램 개발에서는 환영하지만 일반적으로 중요하지는 않습니다. 유지 관리 성이 더 중요합니다. 올바른 설계 패턴을 적용하고, 우수한 아키텍처, 읽을 수있는 코드 및 관련 문서를 가지고 있으며, 이러한 모든 방법은 사내 및 타사 라이브러리에 크게 의존합니다. 그래서, 나는 어떤 종류의 바퀴가 이미 발명되었고 어떻게 그것들을 내 자신의 것으로 만드는지 이해하는 것이 더 중요하다는 것을 알게되었습니다.