2014.08.19

35년된 C++가 아직도 '진짜' 개발자들에게 애용되는 이유...스트로스트룹

Paul Krill | InfoWorld
C++ 언어는 1979년 비얀 스트로스트룹이 고안했다. 시스템 프로그래밍을 위한 범용 언어인 C++는 자바, 자바스크립트, 파이썬(Python), 고(Go), 그리고 애플이 새롭게 공개한 스위프트(Swift)의 도전에도 불구하고 여전히 개발자들에게 절대적인 존재로 군림하고 있다.

현재 모건 스탠리 테크놀로지스트이자 콜롬비아 대학과 텍사스 A&M 대학 교수인 비얀 스트로스트룹은 인포월드 편집장 폴 크릴과 현재 C++의 역할, 그리고 구글 고와 애플 스위프트 언어 등 소프트웨어 개발 분야의 여러 사안에 대한 대담을 나눴다.

인포월드: 파이썬, 자바스크립트와 같은 스크립팅 언어가 인기를 끌고 자바는 물론 구글 고와 같은 언어까지 사용되는 현재, C++의 역할은 어디에 있다고 보는가?

스트로스트룹: 좋은 질문이다. 사람들은 20여 년 전부터 C++의 종말을 열심히 예측해 왔지만, C++는 여전히 성장 중이다. 기본적으로 복잡함을 빠르게 처리하는 데 있어 C++를 능가하는 언어는 없다. 임베디드, 이미지 프로세싱, 통신 애플리케이션, 금융 애플리케이션 등 모두 C++가 지배적으로 사용된다. 애플리케이션 분야에서는 그다지 많이 사용되지 않는다. 구글, 아마존, 검색 엔진 등 성능이 무엇보다 필요한 영역, 그런 곳이 바로 C++가 사용되는 분야다.

인포월드: 최근 구글 고 언어에 대한 관심이 높다. 구글 고에 대해 어떻게 생각하는가?

스트로스트룹: 몇 가지를 매끄럽게 처리할 수 있는 언어들 가운데 하나인 것 같다. 그러나 특정 작업을 매끄럽게 처리하는 데 집중하는 언어는 성능과 보편성 측면에서 다소 떨어진다. 물론 앞으로 어떻게 될 지는 알 수 없다.

인포월드: 새로 등장한 일부 스크립팅 언어들은 개발자들이 손쉽게 사용할 수 있는 언어를 목적으로 한다. C++는 이런 언어들에 비해 더 많은 학습이 필요한 언어라고 생각하는가?

스트로스트룹: 물론 그렇다. C++는 이른바 하드코어 애플리케이션에 맞게 고안된 언어이며 예전부터 항상 스크립팅 언어 등과 함께 사용되어 왔다. 나는 처음 시작했을 당시 제대로 된 프로그래밍 언어와 제대로 된 성능이 필요한 곳이라면 어디서든 C++를 사용했다. 이후 스크립팅 언어로는 유닉스 쉘(Unix shell)을 사용했다.
과거에 그렇게 했고 지금도 대부분의 경우 마찬가지다. C++는 높은 성능, 높은 신뢰성, 작은 용량, 작은 에너지 소비 등의 특성을 지원하는 언어다. 취미로 프로그래밍을 하는 사람이나 간단한 앱을 이야기하는 것이 아니다. 그런 쪽은 C++의 영역이 아니다.

인포월드: 6월 2일 애플은 스위프트 언어를 출시했다. 애플이 추진하는 언어라는 사실만으로 개발자가 관심을 가져야 할 중요한 언어가 될 것이라고 생각하는가?

스트로스트룹: 그렇다고 본다. 애플은 과거 오브젝티브 C(Objective-C)에 관심을 기울였는데 이제는 이 스위프트가 오브젝티브 C 영역을 대체하고 있다.

인포월드: 당신이 발표할 기조 연설에 대한 안내문을 보면, "C++가 직면한 두 가지 과제: 성능, 스케일, 종속성 관점에서 가장 까다로운 작업을 해결하도록 도와야 하며, 또한 일상적인 유지 가능한 코드를 생산적으로 작성하도록 도와야 한다"고 되어 있다. 이 두 가지 과제에 대해 어떤 것들이 준비되어 있는가?

스트로스트룹: 기조 연설에서 두 가지를 설명하려고 한다. 하나는 효율적인 추상화(abstraction)와 하드웨어 사용에 대한 세부적인 내용이고, 다른 하나는 새 코드 작성을 간소화하는 것이다. C++ 11과 C++ 14에는 이를 위한 몇 가지 새로운 기능들이 있다.
올해 마이너급 신규 에디션이 나올 예정인데, 이게 바로 C++ 14다. 클랭(Clang)과 GCC(GNU Compiler Collection)에서 이미 내놓고 있다. C++ 14는 C++ 11에서 했던 작업을 완성하는 형태가 된다. C++ 11처럼 큰 제품을 내놓을 때는 출시 일정에 맞추기 위해 빠지는 부분이 있게 마련이다. 또한 모든 요소를 고려해 실험을 해보기 전까지는 제대로 만들 수 없는 부분들도 있다. C++ 14는 C++ 11에 들어가지 못한 그런 기능들을 제공한다.
C++ 11의 람다(lambdas)를 대신해 이제는 제네릭 람다(generic lambdas)가 들어갔고, 이 람다는 무브 시멘틱(move semantics) 사용을 캡처할 수 있다. 함수, 반환, 형식 추론도 람다와 마찬가지이며 이는 상당히 기술적인 부분들이다. 함수의 구조(컴파일 시에 할 수 있는 함수)에 이제 단순 FOR 문(FOR Loops)을 넣을 수 있다. 변수 템플릿이 있고 메모리 초기화 부분에서도 개선이 이루어졌으며 사용자 정의 리터럴(User-Defined Literals, UDL)이 있다.

인포월드: 프로그래밍의 보안 문제는 어떤가? 프로그램을 보호하기 위해 개발자가 할 일이 있다면? C++는 다른 언어보다 더 안전한 언어인가?

스트로스트룹: 나는 하드웨어로 보안을 강화하는 방법을 전적으로 지지한다. 프로그래밍 언어 측면에서, 좋은 프로그램을 쓰려면 코드를 형식 안전(type-safe) 코드로 작성하라. 그리고 실행 상황을 추적할 수 없는 완전한 일반 인터프리터(Interpreter) 언어를 피해야 한다. 기본적으로 보안은 시스템 문제다.

인포월드: C++ 또는 최근 소프트웨어 개발에 대해 하고 싶은 말은?

스트로스트룹: 소프트웨어 개발에서 더 높은 수준의 프로페셔널리즘을 추구해야 한다. 현대 사회에는 망가지면 절대 안 되는 것들이 존재하는데, 이런 것들의 대부분은 소프트웨어에 의존한다. 또한 시스템을 전체적인 관점에서 생각해야 한다. 언어와 언어 도구 생태계는 그 일부분이다. 개발자들을 교육할 방법, 신뢰성을 강화할 방법에 대해서도 고민해야 한다. editor@itworld.co.kr


2014.08.19

35년된 C++가 아직도 '진짜' 개발자들에게 애용되는 이유...스트로스트룹

Paul Krill | InfoWorld
C++ 언어는 1979년 비얀 스트로스트룹이 고안했다. 시스템 프로그래밍을 위한 범용 언어인 C++는 자바, 자바스크립트, 파이썬(Python), 고(Go), 그리고 애플이 새롭게 공개한 스위프트(Swift)의 도전에도 불구하고 여전히 개발자들에게 절대적인 존재로 군림하고 있다.

현재 모건 스탠리 테크놀로지스트이자 콜롬비아 대학과 텍사스 A&M 대학 교수인 비얀 스트로스트룹은 인포월드 편집장 폴 크릴과 현재 C++의 역할, 그리고 구글 고와 애플 스위프트 언어 등 소프트웨어 개발 분야의 여러 사안에 대한 대담을 나눴다.

인포월드: 파이썬, 자바스크립트와 같은 스크립팅 언어가 인기를 끌고 자바는 물론 구글 고와 같은 언어까지 사용되는 현재, C++의 역할은 어디에 있다고 보는가?

스트로스트룹: 좋은 질문이다. 사람들은 20여 년 전부터 C++의 종말을 열심히 예측해 왔지만, C++는 여전히 성장 중이다. 기본적으로 복잡함을 빠르게 처리하는 데 있어 C++를 능가하는 언어는 없다. 임베디드, 이미지 프로세싱, 통신 애플리케이션, 금융 애플리케이션 등 모두 C++가 지배적으로 사용된다. 애플리케이션 분야에서는 그다지 많이 사용되지 않는다. 구글, 아마존, 검색 엔진 등 성능이 무엇보다 필요한 영역, 그런 곳이 바로 C++가 사용되는 분야다.

인포월드: 최근 구글 고 언어에 대한 관심이 높다. 구글 고에 대해 어떻게 생각하는가?

스트로스트룹: 몇 가지를 매끄럽게 처리할 수 있는 언어들 가운데 하나인 것 같다. 그러나 특정 작업을 매끄럽게 처리하는 데 집중하는 언어는 성능과 보편성 측면에서 다소 떨어진다. 물론 앞으로 어떻게 될 지는 알 수 없다.

인포월드: 새로 등장한 일부 스크립팅 언어들은 개발자들이 손쉽게 사용할 수 있는 언어를 목적으로 한다. C++는 이런 언어들에 비해 더 많은 학습이 필요한 언어라고 생각하는가?

스트로스트룹: 물론 그렇다. C++는 이른바 하드코어 애플리케이션에 맞게 고안된 언어이며 예전부터 항상 스크립팅 언어 등과 함께 사용되어 왔다. 나는 처음 시작했을 당시 제대로 된 프로그래밍 언어와 제대로 된 성능이 필요한 곳이라면 어디서든 C++를 사용했다. 이후 스크립팅 언어로는 유닉스 쉘(Unix shell)을 사용했다.
과거에 그렇게 했고 지금도 대부분의 경우 마찬가지다. C++는 높은 성능, 높은 신뢰성, 작은 용량, 작은 에너지 소비 등의 특성을 지원하는 언어다. 취미로 프로그래밍을 하는 사람이나 간단한 앱을 이야기하는 것이 아니다. 그런 쪽은 C++의 영역이 아니다.

인포월드: 6월 2일 애플은 스위프트 언어를 출시했다. 애플이 추진하는 언어라는 사실만으로 개발자가 관심을 가져야 할 중요한 언어가 될 것이라고 생각하는가?

스트로스트룹: 그렇다고 본다. 애플은 과거 오브젝티브 C(Objective-C)에 관심을 기울였는데 이제는 이 스위프트가 오브젝티브 C 영역을 대체하고 있다.

인포월드: 당신이 발표할 기조 연설에 대한 안내문을 보면, "C++가 직면한 두 가지 과제: 성능, 스케일, 종속성 관점에서 가장 까다로운 작업을 해결하도록 도와야 하며, 또한 일상적인 유지 가능한 코드를 생산적으로 작성하도록 도와야 한다"고 되어 있다. 이 두 가지 과제에 대해 어떤 것들이 준비되어 있는가?

스트로스트룹: 기조 연설에서 두 가지를 설명하려고 한다. 하나는 효율적인 추상화(abstraction)와 하드웨어 사용에 대한 세부적인 내용이고, 다른 하나는 새 코드 작성을 간소화하는 것이다. C++ 11과 C++ 14에는 이를 위한 몇 가지 새로운 기능들이 있다.
올해 마이너급 신규 에디션이 나올 예정인데, 이게 바로 C++ 14다. 클랭(Clang)과 GCC(GNU Compiler Collection)에서 이미 내놓고 있다. C++ 14는 C++ 11에서 했던 작업을 완성하는 형태가 된다. C++ 11처럼 큰 제품을 내놓을 때는 출시 일정에 맞추기 위해 빠지는 부분이 있게 마련이다. 또한 모든 요소를 고려해 실험을 해보기 전까지는 제대로 만들 수 없는 부분들도 있다. C++ 14는 C++ 11에 들어가지 못한 그런 기능들을 제공한다.
C++ 11의 람다(lambdas)를 대신해 이제는 제네릭 람다(generic lambdas)가 들어갔고, 이 람다는 무브 시멘틱(move semantics) 사용을 캡처할 수 있다. 함수, 반환, 형식 추론도 람다와 마찬가지이며 이는 상당히 기술적인 부분들이다. 함수의 구조(컴파일 시에 할 수 있는 함수)에 이제 단순 FOR 문(FOR Loops)을 넣을 수 있다. 변수 템플릿이 있고 메모리 초기화 부분에서도 개선이 이루어졌으며 사용자 정의 리터럴(User-Defined Literals, UDL)이 있다.

인포월드: 프로그래밍의 보안 문제는 어떤가? 프로그램을 보호하기 위해 개발자가 할 일이 있다면? C++는 다른 언어보다 더 안전한 언어인가?

스트로스트룹: 나는 하드웨어로 보안을 강화하는 방법을 전적으로 지지한다. 프로그래밍 언어 측면에서, 좋은 프로그램을 쓰려면 코드를 형식 안전(type-safe) 코드로 작성하라. 그리고 실행 상황을 추적할 수 없는 완전한 일반 인터프리터(Interpreter) 언어를 피해야 한다. 기본적으로 보안은 시스템 문제다.

인포월드: C++ 또는 최근 소프트웨어 개발에 대해 하고 싶은 말은?

스트로스트룹: 소프트웨어 개발에서 더 높은 수준의 프로페셔널리즘을 추구해야 한다. 현대 사회에는 망가지면 절대 안 되는 것들이 존재하는데, 이런 것들의 대부분은 소프트웨어에 의존한다. 또한 시스템을 전체적인 관점에서 생각해야 한다. 언어와 언어 도구 생태계는 그 일부분이다. 개발자들을 교육할 방법, 신뢰성을 강화할 방법에 대해서도 고민해야 한다. editor@itworld.co.kr


X