SWCON201
Opensource & Software
Development Methods and Tools
Department of
Software Convergence
Contents
Agenda
Class
Summary
Reference
Homework
KYUNG HEE UNIVERSITY 2
Question
KYUNG HEE UNIVERSITY 3
Question
“I’m bored. Let’s learn a foreign language”
“What is the most useful foreign language?”
“Japanese, Chinese, English?”
“I’m bored. Let’s learn a programming language”
“What is the most famous programming language?”
“C, C++, Python, JavaScript?”
“Any programming language you (or I) learn will help?”
“Right?”
KYUNG HEE UNIVERSITY 4
Remind and Recommendation
Remind
Optimized tools for domain specific problem
Visit Japan? Then learn Japanese!
Sharp and deep (fine-tuned) tools for the problem
Programming language itself
Libraries and open source softwares
IDEs and development environments
Recommendation
Clear problem definition decides the right (domain specific or
friendly) programming language
KYUNG HEE UNIVERSITY 5
Agenda
How to select right programming language?
Hardware specific problem?
Hardware independent problem?
KYUNG HEE UNIVERSITY 6
Agenda
How to select right programming language?
Hardware specific (or dependent) problem?
Generally C, C++, Assembly
Arduino Kit requests C
Linux/Unix kernel requests platform supported C/C++
MacOS kernel requests Objective-C/Swift
Hardware independent problem?
Web client and server programming
Data analytics
Most high level language based approaches, etc.
KYUNG HEE UNIVERSITY 7
What is hardware related features in C/C++?
Physical memory management
Bit operation
KYUNG HEE UNIVERSITY 8
Physical memory management
Pointer in C/C++
It is a variable whose value is the address of another variable, i.e.,
direct address of the memory location
Like any variable or constant, you must declare a pointer before
using it to store any variable address
KYUNG HEE UNIVERSITY Reference: https://www.thegeekstuff.com/2011/12/c-pointers-fundamentals/ 9
Physical memory management
Memory mapped I/O (Input and Output)
KYUNG HEE UNIVERSITY Reference: https://www.thegeekstuff.com/2011/12/c-pointers-fundamentals/ 10
Domain Specific Languages
How can we select programming language in hardware
independent problem?
Domain!!
Web server (programming language)
Web server (with dedicated tools)
Data analytics
Cloud computing
Microservice programming
etc.
KYUNG HEE UNIVERSITY 11
Web server (programming language)
Javascript (JS, https://developer.mozilla.org/ko/docs/Web/JavaScript)
December 4, 1995
Initially only implemented client-side in web browsers
JavaScript engines are now embedded in many other types of
host software, including server-side in web servers and
databases
Node.js (https://nodejs.org/ko/)
May 27, 2009
An open-source, cross-platform JavaScript run-time
environment for executing JavaScript code server-side
KYUNG HEE UNIVERSITY 12
Web server (programming language)
Node.js (https://nodejs.org/ko/)
HTTP server example
KYUNG HEE UNIVERSITY Reference: https://www.w3schools.com/nodejs/default.asp 13
Web server (with dedicated tools)
Apache (https://httpd.apache.org/)
Nginx (https://nginx.org/en/)
Wordpress (https://ko.wordpress.com/)
KYUNG HEE UNIVERSITY 14
Data analytics (Data Analysis, Data Science)
It is a process of inspecting, cleansing, transforming, and modeling
data with the goal of discovering useful information, suggesting
conclusions, and supporting decision-making
Preferred languages : Why?
Python
R
KYUNG HEE UNIVERSITY 15
Data analytics (Data Analysis, Data Science)
It is a process of inspecting, cleansing, transforming, and modeling
data with the goal of discovering useful information, suggesting
conclusions, and supporting decision-making
Preferred languages : Why?
Python
R
Major requirements
Natural language processing, Syntax processing, etc.
Linear algebra, Probability, Statistics
KYUNG HEE UNIVERSITY 16
Data analytics (Data Analysis, Data Science)
Python (https://www.python.org/)
20 February, 1991
Zen of Python
Beautiful is better than ugly
Explicit is better than implicit
Simple is better than complex
Complex is better than complicated
Readability counts
KYUNG HEE UNIVERSITY 17
Data analytics (Data Analysis, Data Science)
R (https://www.r-project.org/)
KYUNG HEE UNIVERSITY 18
Cloud computing
OpenStack (https://www.openstack.org/)
Since 2010
controls large pools of compute, storage, and networking
resources throughout a datacenter
KYUNG HEE UNIVERSITY 19
Cloud computing
KYUNG HEE UNIVERSITY 20
Microservice programming
Microservice Programming for Datacenter
KYUNG HEE UNIVERSITY Reference: https://avinetworks.com/glossary/microservice/ 21
Microservice programming
Polyglot Programming for Datacenter
KYUNG HEE UNIVERSITY Reference: https://www.researchgate.net/figure/Microservices-Software-Architecture-with-Polyglot-Programming-Leymann-et-al-2016_fig3_337634352 22
Microservice programming
Polyglot Programming for Datacenter
KYUNG HEE UNIVERSITY Reference: https://blog.lelonek.me/be-a-polyglot-programmer-6e7423916ed8 23
Selection by Performance (execution time)
KYUNG HEE UNIVERSITY Reference: https://attractivechaos.github.io/plb/ 24
Selection by Performance (memory usage)
KYUNG HEE UNIVERSITY Reference: https://reubenrochesingh.medium.com/comparison-of-10-programming-languages-f43b0ac337a4 25
Selection by Salary
KYUNG HEE UNIVERSITY Reference: https://insights.stackoverflow.com/survey/2017#salary 26
Selection by GitHub popularity
GitHub is home to open source projects written in 337 unique
programming languages
KYUNG HEE UNIVERSITY 27
Selection by GitHub popularity
KYUNG HEE UNIVERSITY 28
Selection by Tiobe index
Tiobe index is a measure of popularity of programming languages,
created and maintained by the TIOBE Company based in
Eindhoven, the Netherlands
It is calculated from the number of search engine results for
queries containing the name of the language
It covers searches in Google, Google Blogs, MSN, Yahoo!, Baidu,
Wikipedia and YouTube
KYUNG HEE UNIVERSITY Reference: https://www.tiobe.com/tiobe-index/ 29
Selection by Tiobe index
KYUNG HEE UNIVERSITY Reference: https://www.tiobe.com/tiobe-index/ 30
Selection by Tiobe index
KYUNG HEE UNIVERSITY Reference: https://www.tiobe.com/tiobe-index/ 31
SWCON’s Choice : C++
In 1979, Bjarne Stroustrup, a Danish computer scientist, began
work on "C with Classes", the predecessor to C++
Initially, Stroustrup's "C with Classes" added features to the C
compiler, Cpre, including classes, derived classes, strong
typing, inlining and default arguments
In 1983, "C with Classes" was renamed to “C++"
In 1985, the first edition of The C++ Programming Language was
released, which became the definitive reference for the language,
as there was not yet an official standard
In 1989, C++ 2.0 was released, followed by the updated second
edition of The C++ Programming Language in 1991
As of 2017, C++ remains the third most popular programming
language, behind Java and C
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/C%2B%2B 32
SWCON’s Choice : C++
Bjarne Stroustrup
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/C%2B%2B 33
SWCON’s Choice : C++
Bjarne Stroustrup
KYUNG HEE UNIVERSITY Reference: https://www.stroustrup.com/ 34
SWCON’s Choice : C++
General-purpose programming language. It has imperative, object-
oriented and generic programming features, while also providing
facilities for low-level memory manipulation
Bias toward system programming and embedded, resource-
constrained and large systems, with performance, efficiency and
flexibility of use as its design highlights
C++ has also been found useful in many other contexts, with key
strengths being software infrastructure and resource-constrained
applications, including desktop applications, servers (e.g. e-
commerce, web search or SQL servers), and performance-critical
applications (e.g. telephone switches or space probes)
C++ is a compiled language, with implementations of it available on
many platforms
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/C%2B%2B 35
SWCON’s Choice : C++
Many vendors provide C++ compilers, including the Free Software
Foundation, Microsoft, Intel, and IBM
Many other programming languages have been influenced by C++,
including C#, D, Java, and newer versions of C
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/C%2B%2B 36
SWCON’s Choice : C++
KYUNG HEE UNIVERSITY Reference: https://isocpp.org/files/img/timeline-2022-07.png 37
SWCON’s Choice : C++
C++ Standard Site
https://isocpp.org/
KYUNG HEE UNIVERSITY Reference: https://isocpp.org/files/img/timeline-2022-07.png 38
SWCON’s Choice : Python
Paradigm : Multi-paradigm: object-oriented, procedural
(imperative), functional, structured, reflective
Designed by : Guido van Rossum
Developer : Python Software Foundation
First appeared : 20 February 1991
Status : Alive
Typing discipline : Duck, dynamic, strong typing
OS : Windows, macOS, Linux/UNIX, Android and more
License : Python Software Foundation License
Website : python.org
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/Python_(programming_language) 39
SWCON’s Choice : Python
Guido van Rossum began working on Python in the late 1980s as a
successor to the ABC programming language and first released it
in 1991 as Python 0.9.0.
Python 2.0 was released in 2000 and introduced new features
such as list comprehensions, cycle-detecting garbage
collection, reference counting, and Unicode support.
Python 3.0, released in 2008, was a major revision that is not
completely backward-compatible with earlier versions.
Python 2 was discontinued with version 2.7.18 in 2020.
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/Python_(programming_language) 40
SWCON’s Choice : Python
Guido van Rossum
KYUNG HEE UNIVERSITY Reference: https://en.wikipedia.org/wiki/Python_(programming_language) 41
SWCON’s Choice : Python
Python Of cial Site : https://www.python.org/
KYUNG HEE UNIVERSITY Reference: https://www.python.org/ 42
fi
SWCON’s Choice : Python
KYUNG HEE UNIVERSITY Reference: https://www.python.org/ 43
SWCON’s Choice : Python
KYUNG HEE UNIVERSITY Reference: https://www.python.org/ 44
SWCON’s Choice : Python
Of cial Speech of Python
KYUNG HEE UNIVERSITY Reference: https://www.python.org/doc/essays/blurb/ 45
fi
SWCON’s Choice : Python
Of cial Speech of Python
KYUNG HEE UNIVERSITY Reference: https://www.python.org/doc/essays/blurb/ 46
fi
SWCON’s Choice : Python
Of cial Speech of Python
KYUNG HEE UNIVERSITY Reference: https://www.python.org/doc/essays/comparisons/ 47
fi
KYUNG HEE UNIVERSITY
lOS dependent development platforms
Microsoft Visual Studio C++
https://www.visualstudio.com/ko/vs/cplusplus/
Apple Xcode
https://developer.apple.com/kr/xcode/
KYUNG HEE UNIVERSITY 49
lOS independent development platforms
Microsoft Visual Studio Code
https://code.visualstudio.com/
Atom
https://atom.io/
Eclipse
https://www.eclipse.org/
KYUNG HEE UNIVERSITY 50
Others
KYUNG HEE UNIVERSITY Reference: https://carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i-learn-first-infographic.png 51
Others
KYUNG HEE UNIVERSITY Reference: https://carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i-learn-first-infographic.png 52
[REF] 우아한 형제들 (서버) : JavaScript
KYUNG HEE UNIVERSITY Reference: https://www.youtube.com/watch?v=Z0d7ZrxY-i0
53
https://www.youtube.com/watch?v=apw4R9EiR6s&t=16s
[REF] 요기요 (서버) : Python
Reference: https://techblog.yogiyo.co.kr/yogiyo-python/home
KYUNG HEE UNIVERSITY https://www.wesang.com/mobile/newsroom/?nid=161
54
https://www.etnews.com/20220927000104
Summary
Hardware dependent programming requests specific development
language and environments (in general).
Hardware independent programming strongly related to domain
specific features of a language, libraries, and tools.
Every programming language has authors, reason and
recommended use cases.
KYUNG HEE UNIVERSITY 55
Reference
Masterminds of Programming
O'Reilly Media, 2009
KYUNG HEE UNIVERSITY 56
Homework
Survey a specific programming language
Define your problem (domain)
Review widely used domain specific languages
Select an appropriate language and study:
Language author
When and Why author made the language
Pros and Cons of the language
Standard and/or Roadmap of the language
Famous open source softwares using the language
KYUNG HEE UNIVERSITY 57