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

Preview:

DESCRIPTION

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

Citation preview

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

옥찬호

강연자 소개

• 옥찬호

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

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

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

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

• 에이콘출판사 Translator

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

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

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

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

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

WHAT IS “YOUR” PROGRAMMING LANGUAGE?

TIOBE INDEX FOR AUGUST 2014

TIOBE INDEX FOR AUGUST 2014

VERY LONG TERM HISTORY

IS IT RIGHT…?

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

REGULAR EXPRESSION – C++

REGULAR EXPRESSION – PYTHON

WHAT IS “YOUR” PROGRAMMING LANGUAGETO QUERY THE DATA?

QUERY THE DATA “>= 4” IN ARRAY

SIMPLE DATA QUERY – C++

SIMPLE DATA QUERY – C#

MORE COMPLEX…

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

IN THE STUDENT LIST

COMPLEX DATA QUERY – C++

COMPLEX DATA QUERY – C#

WHAT IS “YOUR” PROGRAMMING LANGUAGETO CREATE THE BLOG?

SIMPLE BLOG – C++

…?

SIMPLE BLOG – RUBY ON RAILS

WHAT IS “YOUR” PROGRAMMING LANGUAGETO SORT THE DATA?

QUICK SORT – C++

QUICK SORT – F#

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

BENCHMARK – C++ VS PYTHON

BENCHMARK – C++ VS C#

BENCHMARK – C++ VS RUBY

BENCHMARK – C++ VS F#

HOW MANY PROGRAMMING LANGUAGESARE THERE IN THE WORLD?

THE PARADIGM OF COMPUTER PROGRAMMING IS CHANGING CONSTANTLY.

EACH PROGRAMMING LANGUAGE HASA REASON TO MADE.

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.

RYAN DAHL – THE CREATOR OF NODE.JS

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

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

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.

MARTIN ODERSKY – THE CREATOR OF SCALA

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

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

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.

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++는 큰 장점을 가지고 있습니다.

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.

RICH HICKEY – THE CREATOR OF CLOJURE

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

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

THEREFORE,YOU SHOULD USE THE PROPER LANGUAGE

DEPENDING ON YOUR PURPOSE.

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

BEFORE THE END…

I’D LIKE TO TALK TO YOU.

FIRST,

AND,

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

THANK YOU!QUESTION?

UTILFOREVER@GMAIL.COM

HTTP://WWW.FACEBOOK.COM/UTILFOREVER

Recommended