격변하는 프로그래밍 언어, 이제는 let it go

59
격변하는 프로그래밍 언어, 이제는 LET IT GO 옥찬호

Upload: -

Post on 24-May-2015

7.160 views

Category:

Technology


10 download

DESCRIPTION

프로그래밍을 막 시작하거나 하고 있는 사람들을 위해 준비된 내용으로 요즘 프로그래밍 언어의 패러다임은 예전하고는 많이 달라졌다. 격변하고 있는 프로그래밍 언어의 세계에서 과거와 현재는 어떻게 다르며, 우리가 대처해야 할 자세는 무엇일까.

TRANSCRIPT

Page 1: 격변하는 프로그래밍 언어, 이제는 Let it go

격변하는 프로그래밍 언어,이제는 LET IT GO

옥찬호

Page 2: 격변하는 프로그래밍 언어, 이제는 Let it go

강연자 소개

• 옥찬호

• 히어로 코리아 수석 엔지니어

• 게임 제작팀 Xpecial / Mine Scroll 팀장

• KAIST 전산학과 석사과정 재학

• 경북대학교 컴퓨터학부 졸업

• 에이콘출판사 Translator

• 게임샐러드로 코드 한 줄 없이 게임 만들기 (2013)

• 3D 게임 최적화와 시각적 효과를 위한유니티 Shader와 Effect 제작 (2014)

• 다수의 스터디 운영 및 멘토링 진행

• C++ 공부 10년차 (근데 아직 잘 모르겠어요…)

Page 3: 격변하는 프로그래밍 언어, 이제는 Let it go

한글은 이제 끝, 영문의 세상으로…

Page 4: 격변하는 프로그래밍 언어, 이제는 Let it go

WHAT IS “YOUR” PROGRAMMING LANGUAGE?

Page 5: 격변하는 프로그래밍 언어, 이제는 Let it go

TIOBE INDEX FOR AUGUST 2014

Page 6: 격변하는 프로그래밍 언어, 이제는 Let it go

TIOBE INDEX FOR AUGUST 2014

Page 7: 격변하는 프로그래밍 언어, 이제는 Let it go

VERY LONG TERM HISTORY

Page 8: 격변하는 프로그래밍 언어, 이제는 Let it go

IS IT RIGHT…?

Page 9: 격변하는 프로그래밍 언어, 이제는 Let it go

WHAT IS “YOUR” PROGRAMMING LANGUAGETO MATCH THE PATTERN IN THE DATA?

Page 10: 격변하는 프로그래밍 언어, 이제는 Let it go

REGULAR EXPRESSION – C++

Page 11: 격변하는 프로그래밍 언어, 이제는 Let it go

REGULAR EXPRESSION – PYTHON

Page 12: 격변하는 프로그래밍 언어, 이제는 Let it go

WHAT IS “YOUR” PROGRAMMING LANGUAGETO QUERY THE DATA?

Page 13: 격변하는 프로그래밍 언어, 이제는 Let it go

QUERY THE DATA “>= 4” IN ARRAY

Page 14: 격변하는 프로그래밍 언어, 이제는 Let it go

SIMPLE DATA QUERY – C++

Page 15: 격변하는 프로그래밍 언어, 이제는 Let it go

SIMPLE DATA QUERY – C#

Page 16: 격변하는 프로그래밍 언어, 이제는 Let it go

MORE COMPLEX…

Page 17: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 18: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 19: 격변하는 프로그래밍 언어, 이제는 Let it go

QUERY THE STUDENT ID, SCORE“>= AVERAGE SCORE OF ALL STUDENTS”

IN THE STUDENT LIST

Page 20: 격변하는 프로그래밍 언어, 이제는 Let it go

COMPLEX DATA QUERY – C++

Page 21: 격변하는 프로그래밍 언어, 이제는 Let it go

COMPLEX DATA QUERY – C#

Page 22: 격변하는 프로그래밍 언어, 이제는 Let it go

WHAT IS “YOUR” PROGRAMMING LANGUAGETO CREATE THE BLOG?

Page 23: 격변하는 프로그래밍 언어, 이제는 Let it go

SIMPLE BLOG – C++

…?

Page 24: 격변하는 프로그래밍 언어, 이제는 Let it go

SIMPLE BLOG – RUBY ON RAILS

Page 25: 격변하는 프로그래밍 언어, 이제는 Let it go

WHAT IS “YOUR” PROGRAMMING LANGUAGETO SORT THE DATA?

Page 26: 격변하는 프로그래밍 언어, 이제는 Let it go

QUICK SORT – C++

Page 27: 격변하는 프로그래밍 언어, 이제는 Let it go

QUICK SORT – F#

Page 28: 격변하는 프로그래밍 언어, 이제는 Let it go

WHAT IS “YOUR” PROGRAMMING LANGUAGETO PROCESS THE FASTEST SPEED?

Page 29: 격변하는 프로그래밍 언어, 이제는 Let it go

BENCHMARK – C++ VS PYTHON

Page 30: 격변하는 프로그래밍 언어, 이제는 Let it go

BENCHMARK – C++ VS C#

Page 31: 격변하는 프로그래밍 언어, 이제는 Let it go

BENCHMARK – C++ VS RUBY

Page 32: 격변하는 프로그래밍 언어, 이제는 Let it go

BENCHMARK – C++ VS F#

Page 33: 격변하는 프로그래밍 언어, 이제는 Let it go

HOW MANY PROGRAMMING LANGUAGESARE THERE IN THE WORLD?

Page 34: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 35: 격변하는 프로그래밍 언어, 이제는 Let it go

THE PARADIGM OF COMPUTER PROGRAMMING IS CHANGING CONSTANTLY.

Page 36: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 37: 격변하는 프로그래밍 언어, 이제는 Let it go

EACH PROGRAMMING LANGUAGE HASA REASON TO MADE.

Page 38: 격변하는 프로그래밍 언어, 이제는 Let it go

RYAN DAHL – THE CREATOR OF NODE.JS

• InfoWorld: What's the main benefit [of Node]?

• Dahl: Node does things a bit differently than other programming platforms. The main thing is that it handles I/O very differently, so it doesn't allow the user to lock up the program, ever. It keeps the user handling new things, so it's very useful for network programming.You often are dealing with many people at the same time on your server, and you're juggling these different connections. Node encourages the developer to continue to process connections without blocking.And because of this model of handling I/O, users tend to find it easier than developing with a traditional programming language for servers.

Page 39: 격변하는 프로그래밍 언어, 이제는 Let it go

RYAN DAHL – THE CREATOR OF NODE.JS

• InfoWorld: Node.js의 가장 큰 장점은 무엇이라고 생각하시나요?

• Dahl: Node.js는 다른 프로그래밍 플랫폼과는 약간 다른 무엇인가를가지고 있습니다. 그 중에서 가장 중요한 것중에 하나가 입출력을 매우다르게 처리하고 있다는 점인데, 즉 Node.js에서는 개발자들이프로그래밍을 할 때 사용하는 리소스들을 소유하는 것을 허용하지않습니다. 이런 방법을 사용하게 되면 개발자들은 어떤 리소스를사용하든지 리소스의 소유권에 대한 걱정없이 비지니스 로직에 집중할수 있고, 특히 네트워크 프로그래밍에서 매우 유용하게 사용될 수있습니다. 보통 하나의 서버에서 동시에 수많은 사용자들의 요청을처리해야 하는데, 이 경우 이렇게 서로 다른 수많은 요청과 연결들을처리할 때에는 발생할 수 있는 여러 가지 가능성에 대해서 준비를해야합니다. Node.js는 이런 경우에 개발자들이 네트워크에서 발생하는요청과 연결 처리에 대한 큰 걱정없이 비지니스 로직에만 초점을 맞출 수있도록 도와줍니다. Node.js에서 제공하는 이러한 새로운 입출력 모델때문에, 많은 개발자들이 서버에서 사용되는 기존의 프로그래밍언어보다 Node.js로 개발하는 것이 더 쉽다고 느끼는 것 같습니다.

Page 40: 격변하는 프로그래밍 언어, 이제는 Let it go

MARTIN ODERSKY – THE CREATOR OF SCALA

• InfoWorld: What was your intent in developing Scala?

• Odersky: It was curiosity, whether we could combine functional and object-oriented programming in a package that was useful to people [and] would make it a powerful language... It felt like it would be the right thing to do, to have very complementary strengths. Functional programming is in a sense very clean, it can be very powerful. It makes it easy to construct things out of simple elements. Object-oriented programming has a good story when it comes to essentially the evolution of large systems... I always felt it would be interesting to combine the two, and I think the success of Scala has shown that there is something.

Page 41: 격변하는 프로그래밍 언어, 이제는 Let it go

MARTIN ODERSKY – THE CREATOR OF SCALA

• InfoWorld: Scala 프로그래밍 언어를 만든 의도가 무엇이었습니까?

• Odersky: 처음에는 그냥 호기심이었습니다. 과연 함수형 프로그래밍과객체지향 프로그래밍을 개발자들에게 유용하도록 하나의 패키지로묶을 수 있고, 또 그렇게 묶여진 것이 개발자들을 도와줄 수 있는유용한 언어가 될 수 있는지 없는지 궁금했습니다. 결과적으로는 서로부족한 부분을 보완해 주는 장점을 볼 수 있었기 때문에 꼭 해야할일을 했다고 생각합니다. 함수형 프로그래밍은 매우 깔끔하고강력합니다. 이러한 함수형 프로그래밍의 특성은 시스템의 기반이 되는것들을 쉽게 구축할 수 있도록 도와줍니다. 객체지향 프로그래밍은시스템이 대용량 시스템으로 나아갈때 적용할 수 있는 좋은 선례들을많이 가지고 있습니다. 저는 항상 이 두가지 프로그래밍을 결합하면아주 좋은 결과가 나오지 않을까 고민해 왔습니다. 현재의 Scala의성공은 제가 지금까지 해왔던 이 고민이 헛되지 않았음을 보여주는것이라고 생각합니다.

Page 42: 격변하는 프로그래밍 언어, 이제는 Let it go

BJNARE STROUSTRUP – THE CREATOR OF C++

• InfoWorld: When should a developer opt for native programming, and when should a developer opt for a virtual machine-based language?

• Stroustrup: C++ has significant strengths compared to "virtual machine-based languages" when it comes to building infrastructure. In other words, where performance, reliability, resources, and complexity need to be tightly controlled. For example, you wouldn't write a JavaScript engine in JavaScript, and you probably wouldn't write a "first to market" simple Web app in C++. You would write the foundations of a Google, an Amazon, a Facebook in C++, but maybe not the rapidly changing top layers of such systems. C++ comes in strong where power consumption is an issue -for example, server farms and handheld devices.

Page 43: 격변하는 프로그래밍 언어, 이제는 Let it go

BJNARE STROUSTRUP – THE CREATOR OF C++

• InfoWorld: 개발자들은 어떤때에 네이티브 프로그래밍(native programming)을 선택하고, 또 어떤때에 가상 머신(virtual machine) 기반의 언어들을 선택해야 할까요?

• Stroustrup: C++는 가상 머신 기반의 언어들과 비교해서 시스템의기반구조(infrastructure)를 만들때는 아주 큰 장점을 가지고있습니다. 다시말해서, 성능, 신뢰성, 복잡성, 리소스 관리등이 아주중요한 시스템의 기반구조 개발의 경우 C++가 큰 장점을 가집니다.예를 들어, 자바스크립트 엔진을 자바스크립트로 구현하는 것은 거의불가능합니다. 또한 시장 선점을 위해서 간단한 웹 애플리케이션을구현해야 하는 경우에는 C++를 사용할 필요가 없습니다. 구글, 아마존, 페이스북과 같은 플랫폼의 기반은 C++를 사용해서 구현할수 있지만, 이러한 플랫폼들에서 자주 변경해야하는 상위 레이어를C++로 개발하지는 않습니다. 또한 전력 소비(power consumption)가 중요한 서버 팜(server farm)과 핸드헬드기기(handheld device)에서 C++는 큰 장점을 가지고 있습니다.

Page 44: 격변하는 프로그래밍 언어, 이제는 Let it go

RICH HICKEY – THE CREATOR OF CLOJURE

• InfoWorld: What was your intention in [developing Clojure]?

• Hickey: My intention was to make a dynamic, functional programming language for the JVM. I had been building large systems in C# and Java, and the only way we could do them sanely was to do them in a functional style, but the functional style is not idiomatic in those languages.I wanted a language where functional style was idiomatic, and that's the case for Clojure...Fundamentally, Clojure gives developers a lot of leverage. They can write short, succinct programs that work correctly the first time and are fast enough for production use...It's very popular among startups because they have new ideas they need to pursue quickly.

Page 45: 격변하는 프로그래밍 언어, 이제는 Let it go

RICH HICKEY – THE CREATOR OF CLOJURE

• InfoWorld: Clojure를 만든 목적이 무엇이었습니까?

• Hickey: 사실 처음 목적은 자바 가상 머신(Java Virtual Machine)을위한 동적이고 함수형 프로그래밍 언어를 만드는 것이었습니다. 저는C#과 Java를 사용해서 큰 시스템을 개발해왔는데, 이 두 가지 언어를동시에 품을 수 있는 유일한 방법은 함수형 스타일을 사용하는 것인데, 하지만 함수형 스타일을 사용하게 되면 이 두 언어가 지원하는특징들을 제대로 살릴수가 없게됩니다. 그래서 함수형 스타일을기본으로 가지고 있는 언어가 필요했고, 그래서 만들어진 것이Clojure입니다. 근본적으로 Clojure는 개발자들에게 많은 장점들을제공합니다. 개발자들은 처음에는 쉽게 개발이 가능하고 또한 실제서비스가 가능할 정도로 충분히 빠른 짧고 간결한 프로그램을 작성할수 있습니다. Clojure는 새로운 아이디어들을 가지고 있고 그아이디어들을 재빨리 구현하는 것이 필요한 스타트업 회사들에게매우 인기가 높습니다.

Page 46: 격변하는 프로그래밍 언어, 이제는 Let it go

THEREFORE,YOU SHOULD USE THE PROPER LANGUAGE

DEPENDING ON YOUR PURPOSE.

Page 47: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 48: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 49: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 50: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 51: 격변하는 프로그래밍 언어, 이제는 Let it go

THERE WAS A TIME WHEN NAILS WERE HIGH-TECH. THERE WAS A TIME WHEN PEOPLE

HAD TO BE TOLD HOW TO USE A TELEPHONE.TECHNOLOGY IS JUST A TOOL.

PEOPLE USE TOOLS TO IMPROVE THEIR LIVES.- TOM CLANCY

Page 52: 격변하는 프로그래밍 언어, 이제는 Let it go

BEFORE THE END…

Page 53: 격변하는 프로그래밍 언어, 이제는 Let it go

I’D LIKE TO TALK TO YOU.

Page 54: 격변하는 프로그래밍 언어, 이제는 Let it go

FIRST,

Page 55: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 56: 격변하는 프로그래밍 언어, 이제는 Let it go

AND,

Page 57: 격변하는 프로그래밍 언어, 이제는 Let it go
Page 58: 격변하는 프로그래밍 언어, 이제는 Let it go

DON’T FLATTER YOURSELF.IT’S JUST THE BEGINNING.

Page 59: 격변하는 프로그래밍 언어, 이제는 Let it go

THANK YOU!QUESTION?

[email protected]

HTTP://WWW.FACEBOOK.COM/UTILFOREVER