Transcript PPT
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