hyeonk lab

블로그 이미지

hyeonk

hello world! hyeonk lab.

10년 만에 새로 태어나는 ‘모던 C++’

c & c++ 2014. 11. 4. 23:19

출처: http://www.bloter.net/archives/196746


C++언어가 다시 주목받고 있다. 10여년간 별다른 업데이트 없던 C++가 2011년부터 대대적인 공사에 들어갔기 때문이다. 현재 2014년과 2017년 개발 로드맵이 나온 상태이고, 이를 통칭해 ‘모던 C++’라고 따로 부르고 있다.

C++ 표준화 작업은 1998년에 시작됐다. C++ 표준화 단체에서는 꾸준히 C++에 대한 부족한 부분을 제안하며 보안점을 토의했는데 2011년에 본격적으로 기능을 넣었다. 10년 만에 업데이트를 해서 그런지 최근 트렌드에 맞는 기능들이 대폭 들어갔다. C++ 개발자들도 관심을 보이고 있으며, 관련 세미나도 꾸준히 열리고 있다.

Modern_cpp_04

 ▲6월14일 열린 MS 테크데이즈  C++ 세미나. 약 200명의 개발자가 참여했다. 

C++는 2000년대 초·중반에 특히 사랑받은 언어다. 국내외를 막론하고 게임 분야에서 활발히 사용됐다. 모바일게임 개발 붐이 일어나면서 그 인기가 조금 주춤한 상태다. 김희준 카카오 엔지니어는  “C++는객체 지향 성격을 가지면서, 동시에 하드웨어를 제어하기 좋은  C언어의 장점 모두를 가지고 있다”라며 “지금은 유니티와 같은 다양한 플랫폼이 나왔지만, 당시만 해도 C++를 대체할 만한 언어가 없을 만큼 높은 성능을 냈다”라고 설명했다.

Modern_cpp_05

▲C++로 만드는 프로젝트 종류(출처: MS 테크데이즈 세미나)

C++ 표준화 단체는 언어 뒤에 연도를 붙이는 식으로 새 버전 이름을 정하고 있다. 2011년에 나온 C++는 ‘C++11’, 2014년에 업데이트된 언어는 ‘C++14’이다. 새롭게 변한 C++언어는 람다식, 알밸류(rvalue) 레퍼런스, 비동기 프로그래밍 등을 지원한다. 이러한 기능은 직접 구현하기 어려운 탓에, 언어 차원에서 지원되면 성능 향상에 큰 도움을 준다. 람다식이나 비동기 방식은 최근 자바나 C# 같은 다른 언어에서도 잇달아 지원된 바 있다.

람다식은 알고리즘을 명확하게 하고 표현을 간결하게 하도록 도와준다. 코드량을 줄여주는 데 큰 도움을 주는 셈이다. 예를 들어, 정렬 기능을 이용하고자 할 때 문자 같은 경우 선후 관계를 따로 정의해야 한다. 람다식은 이러한 정렬 기준를 함수로 만들어, 바로 포인터로 보내준다. 김명신 한국MS 수석 기술부장은 “코드 표현이 간결하기로 소문난 파이썬과 비교해도 손색없을 만큼 C++도 짧고 명료하게 사용할 수 있다”라고 설명했다.

Modern_cpp_01

 ▲평균값을 계산하는 코드. 왼쪽이 파이썬으로 만든 코드, 오른쪽은 C++14로 만든 코드(출처:MS 테크데이즈 세미나)

또 다른 기능인 알밸류 레퍼런스는 애플리케이션 구조에 큰 영향을 준다. 과거 C++는 타입 값을 전달할  때 복사본을 만들고 지우는 과정을 반복했다. 이 과정은 시간과 메모리에 영향을 많이 주는데, 알벨류 레퍼런스가 지원되면서 복사하지 않고도 곧바로 옮길 수 있다. 성능이나 속도를 크게 향상시킬 수 있게 된 것이다.

비동기 프로그래밍도 인기 있다. 비동기 프로그래밍은 개발자들 사이에서 최근 가장 많은 관심을 불러일으키는 기능 중 하나다. 개발하기 어렵고 성능에 영향을 많이 주기 때문이다. 동기 호출이란 특정 기능을 요청하면 결과물이 나올 때까지 기다리는 방식이다. 비동기 호출은 결과 값이 나오기 전에 다른 작업을 할 수 있게 도와준다. 그래서 여러 작업을 동시에 할 수 있는 효과를 준다.

그동안 개발자들은 C++를 복잡하고 배우기 힘든 언어라고 생각해 왔다. C++ 표준화 기구도 이에 대해 고민을 많이 한 모습이다. 이런 인식을 바꾸기 위해 라이브러리를 적극적으로 늘리기로 했다. 개발자가 갖다 붙여 사용할 수 있는 예제를 늘리자는 얘기다. 김희준 개발자는 “자바나 C# 같은 경우 라이브러리가 풍부하기 때문에 웹서버 구축이나 채팅 기능을 코드 몇 줄로 바로 넣을 수 있다”라며 “C++개발자는 이를 많은 코드로 구현해야 했지만, 라이브러리가 추가되면서 더 개발이 쉬워질 것”이라고 설명했다.

C++ 표준화 기구는 현재 라이브러리만 지원하는 팀을 따로 두고 있다. MS와 같은 외부 업체들도 C++ API나 라이브러리를 늘려가는 추세다.

Modern_cpp_08

 ▲네트워크 기능을 지원하는 C++ 오픈소스 ‘카사블랑카‘

김명신 MS 수석 기술부장은 “전세계 C++ 프로젝트 통계를 보면, 절반 이상이 4년 이하의 신생 프로젝트”라며 “C++개발자 중 대다수가 20·30대 주류 개발자인 만큼 최근에도 관심을 받고 있다”라고 설명했다.

Modern_cpp_09

 ▲전세계 C++개발자 나이대 분포. (출처: MS 테크데이즈 세미나)


저작자표시 (새창열림)

'c & c++' 카테고리의 다른 글

IsUtf8() - 문자열이 Utf8인지 체크하는 함수  (0) 2013.08.06
안전한 문자열 함수들  (0) 2013.05.03
extern "C" 에 관하여...  (0) 2013.04.16
Posted by hyeonk

인생과 일 모두에서 성공하기 위해 반드시 일아야 할 것들

reference 2014. 8. 17. 11:16

인생과  일 모두에서 성공하기 위해 반드시 일아야 할 것들


http://m.vingle.net/posts/405502-%EC%9D%BC%EA%B3%BC-%EC%9D%B8%EC%83%9D%EC%97%90%EC%84%9C-%EC%84%B1%EA%B3%B5%ED%95%98%EA%B3%A0-%EC%8B%B6%EC%9D%80-%EC%B2%AD%EB%85%84%EB%93%A4%EC%9D%B4-%EA%BC%AD-%EC%9D%BD%EC%96%B4%EC%95%BC-%ED%95%A0-%EA%B8%80?lmifa

저작자표시 (새창열림)

'reference' 카테고리의 다른 글

svn 능력자를 위한 git 개념 가이드  (0) 2015.08.20
Posted by hyeonk

#import msado15.dll이 소스에서 OS등에 따라 컴파일이 되지 않을 때

mfc & winAPI 2014. 4. 11. 14:14

[문제]


컴퓨터에서 실행 중인 Windows 7 SP1 이나 Windows Server 2008 R2 SP1 나 설치 하는 kb983246가 다시 컴파일하십시오 다음 ADO 응용 프로그램 하위 수준 운영 체제에서 실행 되지 않습니다.


http://support.microsoft.com/kb/2517589



[해결책]


#1. Windows 7 의 SP1 을 올리지 않는다. (권장 안함)

-> 현재 시스템 상 자동 업데이트 되고 있고, 개발을 위해서 업그레이드를 미루는 것은 문제가 있을 듯 합니다.


#2. 개인 PC의 ADO 버전을 강제로 내린다 (권장 안함 )

  -> 문제가 있고 추후 상위 버전의 개발을 위해서도 바람직 하지 않습니다. 


#3. ADO 버전을 고정 시킨다 (권장)

-> 현재 사용되는 msado15.dll 버전을 사용하지 않고 아래의 버전중에 하나를 사용한다. 

  - Vista 이상의 환경에서의 컴파일 : #import msado60.tlb (권장)

  - XP 이상의 환경에서의 컴파일 : #import msado28.tlb (옵션)



AS-IS

#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "adoEOF")


TO-BE

#import "C:\Program Files\Common Files\System\ado\msado60.tlb" rename("EOF", "adoEOF")



[기타]

#. 해결책 

http://support.microsoft.com/kb/2640696


#. ADO 버전 

http://msdn.microsoft.com/ko-kr/library/windows/desktop/ms676506(v=vs.85).aspx


출처: http://cdecl.tistory.com/285

저작자표시 (새창열림)

'mfc & winAPI' 카테고리의 다른 글

[강좌/메시지] WM_NOTIFY 메시지에 대해서...(ON_NOTIFY) - 2편  (0) 2015.08.19
[강좌/메시지] WM_NOTIFY 메시지에 대해서...(ON_NOTIFY) - 1편  (0) 2015.08.19
BOOL PreTranslateMessage(MSG* pMsg)  (0) 2014.03.21
분할 윈도우 중 하나에 접근하는 방법  (0) 2014.02.10
[MFC] SendMessage  (0) 2014.01.07
Posted by hyeonk
이전페이지 다음페이지
블로그 이미지

hello world! hyeonk lab.

by hyeonk

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/12   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

링크

카테고리

전체 (44)
ios (1)
mfc & winAPI (17)
c & c++ (4)
java (1)
eclipse (1)
visual_studio (2)
javascript (3)
asp (1)
oracle (3)
개발이야기 (5)
윈도우 일반 (2)
etc (2)
reference (2)
personal_reference (0)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
hyeonk's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

hyeonk lab

hello world! hyeonk lab.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 전체 (44)
    • ios (1)
    • mfc & winAPI (17)
    • c & c++ (4)
    • java (1)
    • eclipse (1)
    • visual_studio (2)
    • javascript (3)
    • asp (1)
    • oracle (3)
    • 개발이야기 (5)
    • 윈도우 일반 (2)
    • etc (2)
    • reference (2)
    • personal_reference (0)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바