What Programming Language Should We Use Tomorrow Kim Young Soo
Jan 11, 2016
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
MULTI-CORE PROCESSLanguage for multi-core parallel programming
CPU Clock Limit
Intel Pentium 4 640 (3.2GHz)\62,900
Intel Core 2 Duo E6600 (2.4GHz)\221,840
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 8Simple.vsh
vs.1.1dp4 oPos.x, v0, c0dp4 oPos.y, v0, c1dp4 oPos.z, v0, c2dp4 oPos.w, v0, c3
dp3 oD1, v3, -c4
mov oD0, c5mov oT0, v7
Shading Language
DirectX 9 Provides HLSLPS_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
PRODUCTIVITYEasiness of programming
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
86,000,000 Lines
283,000,000 Lines
40,000,000 Lines
Productivity for Big program
Gears of WarGameplay Code~250,000 lines C++, script code
Gears of WarGameplay 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
DirectXGraphics
DirectXGraphics
OpenALAudio
OpenALAudio
OggVorbisMusicCodec
OggVorbisMusicCodec
SpeexSpeechCodec
SpeexSpeechCodec
wxWidgetsWindowLibrary
wxWidgetsWindowLibrary
ZLibDataCompr-ession
ZLibDataCompr-ession
…
Productivity for Big program
Modularity
• Functional Language, OOP…
Reliability
• Memory operation
• Type checking
Concurrency
• I already mentioned about concurrency
OTHER TRENDSWeb 2.0, Cloud Computing
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
CONCLUSIONFunctional? Script? and…
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