Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
What Programming Language Should We Use Tomorrow Kim Young Soo Introduction Introduction 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 Contents Introduction Trends and Languages • Multi-core • Productivity • Other trends Conclusion Language for multi-core parallel programming MULTI-CORE PROCESS CPU Clock Limit Intel Intel Core Pentium 2 Duo4E6600 640 (3.2GHz) (2.4GHz) \221,840 \62,900 Trend is Multi-Core Single Core, Dual Core, Quad Core… • Intel Developed 8-Core “Gainestown” As Mr.Lee Presented… Functional Language is good for programming for Multi-core processes • Pure function • Optimization Thread Safe! • Haskell provides STM (transaction memory) Parallel Programming in Haskell Parallel Programming in C OpenMP • We can just use “#prgma omp” directive • Little more complex than Haskell’s case But… Really ‘Little’? • NO! Speed of Functional Language Very Slow • Lazy Evaluation • List Processing • Garbage Collection • Etc.. 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 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 GPU GPU in the VGA Card • To Process Graphic Data Excessive Number of Vertex and Pixel We need Simple but Many and Fast Processer Shading Language To fully use GPU to process graphic data • We need program for GPU : Shader • Decide GPU’s behavior 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 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; } Shading Language High-level shading languages • CG (C for Graphics) • GLSL (OpenGL) • HLSL (DirectX) • C-like languages 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? 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 GPGPU NVidia Supports CUDA for GPGPU • C-like GPGPU program language • Tesla series graphic card for CUDA Revolution Started! GPGPU GPGPU C-like language is not enough • Will you only use assembly to single thread? • More high-level • Language for Parallel computing Functional?! 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 Easiness of programming PRODUCTIVITY Productivity for Small Program Easiness is the most important • For programmer • Not for programmer Labview Matlab 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 Productivity for Big program Big and Bigger! • Mabinogi : 1,000,000 Lines • Windows XP : 40,000,000 Lines • Mac OS X 10.4 : 86,000,000 Lines • Debian 4.0 : 283,000,000 Lines Productivity for Big program Gears of War Gameplay Code ~250,000 lines C++, script code Unreal Engine 3 Middleware Game Engine ~250,000 lines C++ code DirectX Graphics OpenAL Audio Ogg Vorbis Music Codec Speex Speech Codec wx Widgets Window Library ZLib Data Compression … Productivity for Big program Modularity • Functional Language, OOP… Reliability • Memory operation • Type checking Concurrency • I already mentioned about concurrency Web 2.0, Cloud Computing OTHER TRENDS Web 2.0 Based on web application • Dynamic web page • Web based application Programming Languages? • Mainly Framework Based • Easy, Browser-friendly language needed Cloud Computing Server program should be parallel Consider browser and network Functional? Script? and… CONCLUSION Conclusion Multi-core Trend • Concurrency is very important • High-level language for productivity • Functional can be answer 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 C# is under developing C# • structured, imperative, object-oriented, event-driven, functional, static-strong typed Microsoft is providing and developing useful paradigm and functions 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… Reference Tim Sweeney's talk at POPL06 and CEDEC 2008 Wikipedia Google Image Search Thanks for your attention