Presentation is loading. Please wait.

Presentation is loading. Please wait.

What Programming Language Should We Use Tomorrow Kim Young Soo.

Similar presentations


Presentation on theme: "What Programming Language Should We Use Tomorrow Kim Young Soo."— Presentation transcript:

1 What Programming Language Should We Use Tomorrow Kim Young Soo

2 Introduction

3  Language is a religion So, what language do you believe? So, what language should we use tomorrow? We should choose the language which is good for our purpose

4 Contents  Introduction  Trends and Languages Multi-core Productivity Other trends  Conclusion

5 MULTI-CORE PROCESS Language for multi-core parallel programming

6 CPU Clock Limit Intel Pentium 4 640 (3.2GHz) \62,900 Intel Core 2 Duo E6600 (2.4GHz) \221,840

7 Trend is Multi-Core  Single Core, Dual Core, Quad Core… Intel Developed 8-Core “Gainestown”

8 As Mr.Lee Presented…  Functional Language is good for programming for Multi-core processes Pure function Optimization  Thread Safe! Haskell provides STM (transaction memory)

9 Parallel Programming in Haskell

10 Parallel Programming in C  OpenMP We can just use “#prgma omp” directive Little more complex than Haskell’s case  But… Really ‘Little’? NO!

11 Speed of Functional Language  Very Slow Lazy Evaluation List Processing Garbage Collection Etc..

12 Trend is Multi-Core…?  Single Core, Dual Core, Quad Core… Intel Developed 8-Core “Gainestown”  Changing not so rapidly Still, Even quad-core is not so common Expensive

13 But there is…  In my computer, there is a device which Can process numbers faster than CPU! Have more core than CPU! …more expensive than CPU! OTL

14 GPU  GPU in the VGA Card To Process Graphic Data Excessive Number of Vertex and Pixel We need Simple but Many and Fast Processer

15 Shading Language  To fully use GPU to process graphic data We need program for GPU : Shader Decide GPU’s behavior

16 Shading Language  Shader in DirectX 8 Simple.vsh vs.1.1 dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 dp4 oPos.w, v0, c3 dp3 oD1, v3, -c4 mov oD0, c5 mov oT0, v7

17 Shading Language  DirectX 9 Provides HLSL PS_OUT ps( PS_IN In ) { PS_OUT Out = ( PS_OUT ) 0; float4 color; float4 shadow; color = tex2D( sBase, In.Base.xy ); shadow = tex2D( sShadow, In.Shadow.xy ); color = color * shadow; Out.Color = color; return Out; }

18 Shading Language  High-level shading languages CG (C for Graphics) GLSL (OpenGL) HLSL (DirectX) C-like languages

19 Shading Language  And next…?  Graphic Library to Software Rendering Tim Sweeney(Epic Games)’s speech in CEDEC 2008 We need high level language Productivity is also important  Basically, shader programming is massive-parallel Shading Language often describe what ‘value’ should be Why cannot be functional?

20 GPGPU  GPU is not only for shading Good to Floating point operations High-end VGA Card’s has >1 Tflops of computing power GPU for General Purpose

21 GPGPU  NVidia Supports CUDA for GPGPU C-like GPGPU program language Tesla series graphic card for CUDA  Revolution Started!

22 GPGPU

23  C-like language is not enough Will you only use assembly to single thread? More high-level Language for Parallel computing  Functional?!

24 Functional is not a Panacea  Difficult for common programmers in field IO, GUI programming Procedural Algorithms Flow control Why we are still using QWERTY keyboard?  Evaluation cost

25 PRODUCTIVITY Easiness of programming

26 Productivity for Small Program  Easiness is the most important For programmer Not for programmer Labview Matlab

27 Script Language  Python, Ruby, JavaScript and etc..  Very easy to learn Simple grammar Doesn’t need to consider everything  Some weakly-dynamic typed language Easy More Intuition Friendly

28 Productivity for Big program  Big and Bigger! Mabinogi : Windows XP : Mac OS X 10.4 : Debian 4.0 : 1,000,000 Lines 86,000,000 Lines 283,000,000 Lines 40,000,000 Lines

29 Productivity for Big program Gears of War Gameplay Code ~250,000 lines C++, script code Gears of War Gameplay Code ~250,000 lines C++, script code Unreal Engine 3 Middleware Game Engine ~250,000 lines C++ code Unreal Engine 3 Middleware Game Engine ~250,000 lines C++ code DirectX Graphics DirectX Graphics OpenAL Audio OpenAL Audio Ogg Vorbis Music Codec Ogg Vorbis Music Codec Speex Speech Codec Speex Speech Codec wx Widgets Window Library wx Widgets Window Library ZLib Data Compr- ession ZLib Data Compr- ession …

30 Productivity for Big program  Modularity Functional Language, OOP…  Reliability Memory operation Type checking  Concurrency I already mentioned about concurrency

31 OTHER TRENDS Web 2.0, Cloud Computing

32 Web 2.0  Based on web application Dynamic web page Web based application  Programming Languages? Mainly Framework Based Easy, Browser-friendly language needed

33 Cloud Computing  Server program should be parallel  Consider browser and network

34 CONCLUSION Functional? Script? and…

35 Conclusion  Multi-core Trend Concurrency is very important High-level language for productivity Functional can be answer

36 Conclusion  Productivity is very ‘very’ important For small program Easy script language can be answer For big program Must be well-moduled High-Level language Functional language can be answer

37 C# is under developing  C# structured, imperative, object-oriented, event-driven, functional, static-strong typed  Microsoft is providing and developing useful paradigm and functions

38 My Recommendation  Learn and use Haskell Python or Ruby or Perl C# And Assembly, C, C++, Delphi, HDL, Java, Matlab, Labview, Lex, Lua, Prolog, Regular Expression, Visual Basic…

39 Reference  Tim Sweeney's talk at POPL06 and CEDEC 2008  Wikipedia  Google Image Search

40 Thanks for your attention


Download ppt "What Programming Language Should We Use Tomorrow Kim Young Soo."

Similar presentations


Ads by Google