400 likes | 547 Views
What Programming Language Should We Use Tomorrow. Kim Young Soo. Introduction. Introduction. Tool. 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
E N D
What Programming Language Should We Use Tomorrow Kim Young Soo
Introduction Tool • 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 So Hot! Intel Core 2 Duo E6600 (2.4GHz) \221,840 Intel Pentium 4 640 (3.2GHz) \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 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 • 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 : • Windows XP : • Mac OS X 10.4 : • Debian 4.0 : 1,000,000 Lines 40,000,000 Lines 86,000,000 Lines 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 OggVorbis Music Codec Speex SpeechCodec wxWidgets Window Library ZLib Data Compr- ession …
Productivity for Big program • Modularity • Functional Language, OOP… • Reliability • Memory operation • Type checking • Concurrency • I already mentioned about concurrency High Level - Functional
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
- End- Thanks for your attention