2018.03.05 판도라큐브 세미나
제작자: 프로그래밍 파트 강민석
코멘트: 2주간 남는 시간에 여러 언어들을 공부했지만 시간이 많이 부족하네요 ㅠㅠ
이번엔 PPT도 멋지게 꾸밀려고 했는데 결국...
내용에 오류가 있을 수 있거나 조금 허술할 수도 있습니다.
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2017 tensor flow dev summit (Sequence Models and the RNN API)
작성된 자료로 2017년 2월 22일 오후 8시 부터 Maru180에서
GDG Seoul 에서 주최한 2017 Tensorflow Dev Summit Extended Seou에서
발표를 진행
Sequence Models and the RNN API 정리 내역 공유
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
머신러닝 및 데이터 과학 분야의 컴퓨팅 수요는 해가 갈수록 급증하고 있습니다. 이와 더불어 분산처리 기술, 데이터 파이프라이닝 및 개발 환경 스택 관리 등의 관련된 다양한 이슈들 또한 엄청나게 늘어나고 있습니다. 머신러닝 모델의 기하급수적인 모델 복잡도 증가 추세와 마찬가지로, 모델 학습을 위한 환경 관리 또한 갈수록 복잡도가 높아지는 추세입니다.
이 세션에서는 이러한 문제를 해결하기 위해 python 언어 기반의 분산처리 스케쥴링/오케스트레이션 미들웨어 플랫폼을 개발한 4년간의 과정에서 겪은 다양한 문제들에 대해 다룹니다. 2015년 컨테이너 기반의 고밀도 분산처리 플랫폼 설계 및 프로토타이핑 과정을 PyCon KR에서 발표한 이후, 실제 구현 및 오픈소스화, 안정화를 거치며 겪은 다양한 기술적/비기술적 문제들에 대한 경험을 공유합니다.
기술적으로는 최근 몇 년 간의 클러스터 플랫폼 관련 기술의 진보와 함께 탄생한 다양한 도구들과, 이러한 도구들을 python 기반으로 엮어내기 위해 사용하고 개발한 다양한 오픈소스들을 다룹니다. Python 기반의 컨테이너 스케쥴링 및 오케스트레이션 과정의 구현과, 다양한 프로그래밍 언어로 만든 SDK를 graphQL을 이용하여 연동하는 과정에서의 몇몇 유의점을 설명합니다. 아울러 python 기반의 SDK를 다양한 언어로 포팅했던 경험을 간단하게 안내합니다.
플랫폼을 개발하는 중 등장한 TensorFlow, PyTorch 등의 다양한 머신러닝 프레임워크들을 도입하며 겪은 문제와 해결 과정에 대해서도 나눕니다. 연구 분야에는 Python 2.7 기반의 프레임워크들이 여전히 많습니다. 이러한 프레임워크 및 라이브러리의 지원을 위하여 Python 2 기반의 프레임워크와 Python 3.7로 구현한 컨테이너 인터페이스를 단일 컨테이너 환경에 중복 빌드 및 상호 간섭 없이 공존시키기 위해 개발한 아이디어를 소개합니다.
마지막으로 Python 기반의 프레임워크를 개발, 배포 및 상용화 하는 과정에서 겪은 다양한 어려움을 소개합니다. 솔루션을 배포 및 보급할 때 겪는 다양한 런타임, 하드웨어 환경 및 개인 정보 보호를 위한 폐쇄망 대상의 디플로이 등에 대응하기 위하여 Python 응용프로그램을 단독 실행용으로 패키징하는 과정에서 겪은 팁들을 설명합니다. 또한 GUI 빌드 및 Python, Go 및 C++을 함께 사용한 드라이버 가상화 레이어 개발 등의 내용도 살짝 다룹니다.
이 슬라이드는 PyCon KR 2019의 발표 슬라이드입니다. ( https://www.pycon.kr/program/talk-detail?id=138 )
2020.01.20 판도라큐브 세미나
제작자: 프로그래밍 파트 김준우
코멘트: 두둥~ (보노보노 사진)
비고: (해달 선배와 함께 하는) 게임에 재미 요소 부여하기
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2020.01.13 판도라큐브 세미나
제작자: 프로그래밍 파트 조재현
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2017 tensor flow dev summit (Sequence Models and the RNN API)
작성된 자료로 2017년 2월 22일 오후 8시 부터 Maru180에서
GDG Seoul 에서 주최한 2017 Tensorflow Dev Summit Extended Seou에서
발표를 진행
Sequence Models and the RNN API 정리 내역 공유
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
머신러닝 및 데이터 과학 분야의 컴퓨팅 수요는 해가 갈수록 급증하고 있습니다. 이와 더불어 분산처리 기술, 데이터 파이프라이닝 및 개발 환경 스택 관리 등의 관련된 다양한 이슈들 또한 엄청나게 늘어나고 있습니다. 머신러닝 모델의 기하급수적인 모델 복잡도 증가 추세와 마찬가지로, 모델 학습을 위한 환경 관리 또한 갈수록 복잡도가 높아지는 추세입니다.
이 세션에서는 이러한 문제를 해결하기 위해 python 언어 기반의 분산처리 스케쥴링/오케스트레이션 미들웨어 플랫폼을 개발한 4년간의 과정에서 겪은 다양한 문제들에 대해 다룹니다. 2015년 컨테이너 기반의 고밀도 분산처리 플랫폼 설계 및 프로토타이핑 과정을 PyCon KR에서 발표한 이후, 실제 구현 및 오픈소스화, 안정화를 거치며 겪은 다양한 기술적/비기술적 문제들에 대한 경험을 공유합니다.
기술적으로는 최근 몇 년 간의 클러스터 플랫폼 관련 기술의 진보와 함께 탄생한 다양한 도구들과, 이러한 도구들을 python 기반으로 엮어내기 위해 사용하고 개발한 다양한 오픈소스들을 다룹니다. Python 기반의 컨테이너 스케쥴링 및 오케스트레이션 과정의 구현과, 다양한 프로그래밍 언어로 만든 SDK를 graphQL을 이용하여 연동하는 과정에서의 몇몇 유의점을 설명합니다. 아울러 python 기반의 SDK를 다양한 언어로 포팅했던 경험을 간단하게 안내합니다.
플랫폼을 개발하는 중 등장한 TensorFlow, PyTorch 등의 다양한 머신러닝 프레임워크들을 도입하며 겪은 문제와 해결 과정에 대해서도 나눕니다. 연구 분야에는 Python 2.7 기반의 프레임워크들이 여전히 많습니다. 이러한 프레임워크 및 라이브러리의 지원을 위하여 Python 2 기반의 프레임워크와 Python 3.7로 구현한 컨테이너 인터페이스를 단일 컨테이너 환경에 중복 빌드 및 상호 간섭 없이 공존시키기 위해 개발한 아이디어를 소개합니다.
마지막으로 Python 기반의 프레임워크를 개발, 배포 및 상용화 하는 과정에서 겪은 다양한 어려움을 소개합니다. 솔루션을 배포 및 보급할 때 겪는 다양한 런타임, 하드웨어 환경 및 개인 정보 보호를 위한 폐쇄망 대상의 디플로이 등에 대응하기 위하여 Python 응용프로그램을 단독 실행용으로 패키징하는 과정에서 겪은 팁들을 설명합니다. 또한 GUI 빌드 및 Python, Go 및 C++을 함께 사용한 드라이버 가상화 레이어 개발 등의 내용도 살짝 다룹니다.
이 슬라이드는 PyCon KR 2019의 발표 슬라이드입니다. ( https://www.pycon.kr/program/talk-detail?id=138 )
2020.01.20 판도라큐브 세미나
제작자: 프로그래밍 파트 김준우
코멘트: 두둥~ (보노보노 사진)
비고: (해달 선배와 함께 하는) 게임에 재미 요소 부여하기
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2020.01.13 판도라큐브 세미나
제작자: 프로그래밍 파트 조재현
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.12.23 판도라큐브 세미나
제작자: 프로그래밍 파트 양수진
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.11.12 판도라큐브 세미나
제작자: 프로그래밍 파트 김규리
코멘트: 쉐이더를 겉핡기로 알아봅시다.
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.11.05 판도라큐브 세미나
제작자: 프로그래밍 파트 문성현
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.10.29 판도라큐브 세미나
제작자: 프로그래밍 파트 박기춘
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.10.01 판도라큐브 세미나
제작자: 프로그래밍 파트 김건
코멘트: 없음
비고: Wow!
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.09.24 판도라큐브 세미나
제작자: 프로그래밍 파트 김건
코멘트: 없음
비고: 선형 보간법에 관한 내용입니다.
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.09.10 판도라큐브 세미나
제작자: 기획 파트 조경열
코멘트: 영상을 급하게 찍어서 넣어봤는데, 영상 퀄리티가 떨어지는 점 양해 부탁드립니다.
ppt치고 용량이 큰 편이므로 다운로드 시 유의해주세요.
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.09.03 판도라큐브 세미나
제작자: 프로그래밍 파트 이명석
코멘트: 입부한지 1년인데 벌써 세 번째 세미나네요.
곧 경고차감세미나로 또 만날 예정입니다.
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.08.19 판도라큐브 세미나
제작자: 프로그래밍 파트 이진호
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.08.12 판도라큐브 세미나
제작자: 기획 파트 김혜연
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.08.05 판도라큐브 세미나
제작자: 프로그래밍 파트 이상우
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.07.29 판도라큐브 세미나
제작자: 기획 파트 방재현
코멘트: 발표를 진행한 후, 31일날 NC소프트에서 오토배틀러 관련하여 글을 게시했습니다. 본 발표보다 오토배틀러에 대해 더 자세한 내용을 알고 싶으신 분은 링크를 참고하여주시기 바랍니다.
LINK: 게임 디자인 레벨업 #18: https://blog.ncsoft.com/game-design-levelup-18-20190731/
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.07.22 판도라큐브 세미나
제작자: 프로그래밍 파트 박기웅
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.07.15 판도라큐브 세미나
제작자: 프로그래밍 파트 나원준
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.07.01 판도라큐브 세미나
제작자: 프로그래밍 파트 강승곤
코멘트: 없음
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.06.24 판도라큐브 세미나
제작자: 프로그래밍 파트 이정민
코멘트: 떼돈 벌즈아
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.05.28 판도라큐브 세미나
제작자: 기획 파트 김종성
코멘트: 야 재밌는 이야기 좀 해봐라
비고: 없음
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
2019.05.21 판도라큐브 세미나
제작자: 프로그래밍 파트 권혁재
코멘트: 인디게임계에서 자주 쓰이고 있는 '게임메이커(GameMaker)'에 대해 간단히 알아보는 시간을 가져보는 건 어떨까요?
비고: 19관리자의 두번째 발표입니다. 다른 발표와 마찬가지로 움짤이나 이벤트 등이 삽입되어있으므로 받아서 보는게 더 좋을 것으로 예상됩니다.
아...진짜 못만들었네...
판도라큐브는 세종대학교 소프트웨어융합대학 소속의 게임 제작 동아리입니다.
매주 회의마다 게임 제작과 관련된 주제로 세미나를 개최합니다.
모든 자료는 세미나 자료 제작자의 동의 하에 업로드됩니다.
세미나의 소유 및 책임은 제작자가 지닙니다.
27. 트랜드를알수있는간단팁
http://www.aladin.co.kr/shop/wbrowse.aspx?CID=351&BrowseTarget=List
도서구매 사이트에서 최근 나오고 있는 책의 현황을 보면 어느정도 유추할 수 있다.
https://github.com/trending?since=monthly
오픈소스 참여율을 보며 현재 많은 사람들이 관심 있는 프로젝트나 언어들을 파악
할 수 있다.
https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted
최대 개발자 커뮤니티에서 답을 찾아본다.
https://news.ycombinator.com/
IT 관련 뉴스나 소식을 모아 놓은 사이트
트랜지스터의 집적도는 가격, 발열 등 여러가지 이유로 한계에 봉착했고
멀티코어의 시대에 들어서게 됩니다.
멀티코어에 맞게 프로그래밍을 하지만 여러 문제에 봉착하게 됩니다.
속도를 내기위해서는 한 자원을 여러 스레드, 프로세스간 공유를 해야 빠른 속도를 낼 수 있습니다.
그러나 여기서 문제들이 발생합니다.
Dead Lock(교착상태) – 상호배제, 점유대기, 선점불가, 순환성 대기 만족, 즉 한 자원을 가지고 두 프로세스가 기다리는 현상
Starvation (기아상태) – 사용할 수 없는 자원을 무한히 기다리는 문제
(자세한 내용은 공룡이 그려진 운영체제 책을 참고해주세요)
멀티 스레드, 멀티코어 프로그래밍으로 넘어가면 프로그래밍의 난이도는 수직 상승하게 됩니다.
그 이유는 Break Point 디버깅을 할 수 없는 상황이 많고 버그의 재현이 때론 안되는 경우도 있는 등 여러 이유가 있습니다
그래서 프로그래머들은 생각했을 겁니다 이런 상황을 미연 방지하는 코딩을 할 수 없을까..?
위 사례 말고도 기존 사용한 언어의 문제점, 한계, 편의성을 개선 하고자 새로운 언어가 등장하기도 하고
새로운 이론을 적용한 언어가 나오기도 합니다.
이 처럼 프로그래밍 환경은 변하고 있습니다.
new generation programming languages
https://www.tiobe.com/tiobe-index/
아직 크게 변하지 않고 있습니다 여전히 점유율 면에서는C, C++, JAVA, Python, C#등으로 이루어져 있습니다.
이는 어쩔 수 없는 현상이기도 합니다. 기존 시스템을 새로 만드는 것은 비용이 만만치 않고 새로운 문제를 가져올 수 있습니다.
https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted
그러면 개발자들은 무슨 생각을 하고 있을까?
개발자들이 가장 사랑하는 사이트 스택오버 플로우에서 답을 찾아보았습니다.
사이트 차원에서 2017년 설문을 진행하였습니다. 거기서 가상 사랑하는 언어를 선정하였는데요
현재 점유율과는 다른 양상을 보이고 있습니다.
여기서 저는 몇가지 언어를 소개하고 기존 언어들은 어떻게 바뀌고 있는지 설명하도록 하겠습니다.
Rust
https://www.rust-lang.org/ko-KR/
개발: 모질라 리서치
[자료 출처]
https://www.rust-lang.org/ko-KR/
https://www.slideshare.net/deview/132-rust?qid=6a717630-e917-460d-a6fd-fb753462efd4&v=&b=&from_search=1
https://namu.wiki/w/Rust
https://ko.wikipedia.org/wiki/%EB%9F%AC%EC%8A%A4%ED%8A%B8_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)
https://rustbyexample.com/
https://librewiki.net/wiki/Rust
스택오버플로우 유저들이 가장 좋아하는 언어!
"안전하고, 병렬적이며, 실용적인" 언어
시스템 프로그래밍 언어
C/C++ 대체를 목표
병렬 처리, 동시성 프로그래밍에 강점
garbage collector
C/C++처럼 개발자에게 메모리를 전적으로 맡기지 않는다.
세그폴트 – 세그멘테이션 결함의 줄인말로 프로그램이 허용되지 않은 메모리 영역에 접근을 시도하거나, 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 경우를 말한다.
- 기본적으로 다른 언어들처럼 변수를 선언하면 RUST는 상수로 처리한다.
- 변수를 초기화 하지 않으면 컴파일러에서 오류 처리한다.
데이터 수정을 제한함으로 문제를 미연 방지하려는 의도이다.
데이터를 수정하려면 mut(mutable refernce, 변경가능한 참조)키워드를 넣어 수정권한도 받아와야 한다.
병렬 프로그래밍의 문제는 자원 공유에서 대부분이 일어납니다. 데이터가 동기화 되지 않아 이상한 결과를 내놓는 문제가 있는데
기존에는 락을 걸어서 문제를 방지는데 이는 시스템이 커지면 커질수록 문제발생시 발생원인을 찾기가 매우 어려워지는 문제가 있습니다.
Rust에는 소유권이 존재한다.
소유권은 하나만 존재한다. 2개이상의 변수가 같은 데이터의 소유권을 가질 수 없다.
= 으로 넘기면 소유권도 함께 넘겨주게 된다.(함수의 인자로 넘겨도 그렇다), 기존에 갖고있던 변수는 소유권을 잃어 더 이상 제어를 할 수 없다.
소유권은 컴파일러 단에서 추적된다.
TypeScript
https://www.typescriptlang.org/
JavaScript를 안정적으로!
컴파일하면 JavaScript로 바뀐다.
자바스크립트에 타입을 추가하고 유용한 기능, 최신 ECMA표준 문법 등이 포함된 언어라 보면 된다.
최신 ECMA문법은 예전 브라우저에서 동작하지 않을 가능성이 있다.
컴파일러가 있어 문법오류를 감지할 수 있다.
자바스크립트는 유연한 언어라서 될까 싶으면 다된다. 그 때문에 꼬이는 현상이 높은 확률로 등장하는데 TypeScript는 엄격한 편이라 미연 방지된다.
Go
https://golang.org/
개발: 구글
https://ko.wikipedia.org/wiki/Go_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)
로버트 그리즈머, 롭 파이크, 켄 톰슨
개발자왈 C++의 복잡성을 싫어하며 이로 인해 새로운 언어를 설계하는 계기가 되었다
C언어의 영향을 많이 받았다.
문법이 간단해 컴파일속도가 빠르며 인터프리터처럼 사용할 수도 있다.
쓰레기수집기를 지원한다.
- 백엔드 점유율을 가져오고 있다.
세미콜론이 없다.
클래스가 없다, 상속도 없다( struct로 객체지향 처럼 쓸수는 있다. )
캡슐화가 지원된다, 파일내 public(대문자로 시작), private(소문자로 시작)는 메서드의 맨 앞 글자 대소문자에 의해 결정된다.
Interface는 제공한다.
문법이 간단해 스크립트 언어를 Go로 바꾸기 용이하다.
Go루틴 이라는 스레드 비슷한 동시성 프로그래밍을 지원한다.
스케줄러에 의해 관리되며 스레드보다 경량화 되어 많이 돌릴 수 있다.
한계점은 고루틴과 가비지 컬렉터로 인해 시스템이 커지면 C/C++ 보다는 느리다.
위 결과를 보면 main과 루틴이 동시에 실행된다는 것을 알 수 있다.
현재에 안주하지 않는 언어들
C++ 17
람다
[캡쳐] (인자) {
//내용
}
JAVAScript는 정말 중구난방한 언어였습니다.
사람들의 시선도 웹에서 쓰는 언어? 정도의 인지도만을 갖고있었습니다.
그러나 Node.js의 등장으로 JavaScript의 사용범위가 늘어났습니다. 또한 Npm을 통해 JAVAScript의 생태계가 구축되었고
Babel의 등장으로 최신문법을 지원 등등 단점들이 해소되어 범용성 높은 언어와 전망있는 언어로 재 탄생하게 됩니다.
코드 예로 설명드리겠습니다.
그러나 웹환경이 개선되면서 XMLHttpRequest를 이용해 Ajax라는 개념이 등장했고 Jquery가 등장했습니다.
그러나 웹이 방대해지면 DOM갱신때 마다 이벤트 바인딩을 해줘야 하는데 여러 예외처리를 하다 보니 코드량이 엄청나게 증가합니다.
또한 이 이벤트 발생시 callback을 사용하는데 예외처리도 callback으로 처리하게 되고 다방면을 callback으로 처리하는 상황이 발생합니다. callback안에 콜백이라는 callbackHell이 발생합니다.
현재 트랜드를 알 수 있는 쉬운 팁
http://www.aladin.co.kr/shop/wbrowse.aspx?CID=351&BrowseTarget=List
도서구매 사이트에서 최근 나오고 있는 책의 현황을 보면 어느정도 유추할 수 있다.
https://github.com/trending?since=monthly
오픈소스 참여율을 보며 현재 많은 사람들이 관심 있는 프로젝트나 언어들을 파악 할 수 있다.
https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted
최대 개발자 커뮤니티에서 답을 찾아본다.