0% found this document useful (0 votes)
35 views58 pages

LectureNote 03 Selecting Right Language

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views58 pages

LectureNote 03 Selecting Right Language

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

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

You might also like