jagomart
digital resources
picture1_Concepts Of Programming Languages Pdf 188145 | 17 Summary


 138x       Filetype PDF       File size 1.12 MB       Source: www.ida.liu.se


File: Concepts Of Programming Languages Pdf 188145 | 17 Summary
lectures 1introduction 2concepts and models of programming languages 3declarative computation model 4declarative programming techniques 5declarative computation implementation tdda69 data and program structure 6declarative concurrency 7message passing concurrency 8explicit state and ...

icon picture PDF Filetype PDF | Posted on 02 Feb 2023 | 2 years ago
Partial capture of text on file.
                                                                                                   Lectures
                                                                                 1Introduction
                                                                                 2Concepts	and	models	of	programming	languages
                                                                                 3Declarative	Computation	Model
                                                                                 4Declarative	Programming	Techniques
                                                                                 5Declarative	Computation	Implementation
           TDDA69	Data	and	Program	Structure
                                                                                 6Declarative	Concurrency
                                                                                 7Message	Passing	Concurrency
                                                                                 8Explicit	State	and	Imperative	Model
                               Summary
                                                                                 9Imperative	Programming	Techniques
                                                                                 10Imperative	Programming	Implementation
                               Cyrille	Berger                                    11Shared-State	Concurrency
                                                                                 12Relational	Programming
                                                                                 13Specialized	Computation	Models
                                                                                 14Macro
                                                                                 15Running	natively	and	JIT
                                                                                 16Garbage	Collection
                                                                                 17SSuummmmaarryy
                                                                                                                                    2	/	34
             Programming	Paradigms                                                          Lecture	content
                                                                                    Summary
                                                                                     Choosing	an	appropriate
                                                                                     Programming	Language	Paradigm
                                                                                      The	different	types	of	interpreter
                                                                                    GUI	Programming
                                                               3	/	34                                                               4	/	34
                                                                                                                                                                                        Do	we	need	new	programming	languages?
                                                                                                                                                                                               New	Concepts
                                                                                                                                                                                                  in	the	early	days,	object	orientation
                                                                                                                                                                                               New	problems	and	new	infrastructure
                                                                 Summary
                                                                                                                                                                                                  Multi-threading
                                                                                                                                                                                                  Distributed	computing
                                                                                                                                                                                                  ...
                                                                                                                                                                                               Develop	a	better	syntax
                                                                                                                                                                                                                                                                                                             6	/	34
                                                                                                                                                                                        Motivation	for	creating	Rust
                           Motivation	for	creating	Go
                             Rob	Pike,	Go	creator:	‟A	couple	of	years	ago,	several	of	us	at	Google	became	a	little                                                                         Graydon	Hoare,	Rust	creator:	‟A	lot	of	oobbvviioousus		ggoooodd		iiddeeaass,	known	and	loved	in	other
                             frustrated	with	the	software	development	process,	and	particularly	using	C++	to                                                                               languages,	hahavveenn''tt		mmaaddee		iitt	into	widely-used	systems	languages,	or	are	deployed	in
                             write	large	server	software.	We	found	that	the	bbiinanarriieess		tteendndeedd		ttoo		bbee		mmucuch	h	ttoooo		bbiigg.                                          languages	that	have	very	poor	(unsafe,	concurrency-hostile)	memory	models.	There
                             They	took	ttoooo		lloongng		ttoo		ccoommppiillee.	And	the	language	itself,	which	is	pretty	much	the                                                           were	a	lot	of	good	competitors	in	the	late	70s	and	early	80s	in	that	space,	and	I
                             main	system	software	language	in	the	world	right	now,	is	aa		vveerry	y	oolldd		llaangnguauaggee.	A	lot                                                        wanted	to	rreevviivvee		ssoommee		ooff		ttheheiirr		iiddeeaass	and	give	them	another	go,	on	the	theory	that
                             of	the	iiddeeaass		aandnd		cchahangngeess		iin	n	haharrddwwaarree	that	have	come	about	in	the	last	couple	of                                                  circumstances	have	changed:	the	internet	is	highly	concurrent	and	highly	security-
                             decades	haven’t	had	aa		cchahancncee		ttoo		iinfluenfluencncee		CC++++.”                                                                                        conscious,	ssoo		tthehe		ddeessiiggn-n-ttrraaddeeooffffss		tthahatt		aallwwaayyss		ffaavvoorr		CC		aandnd		CC++++		((ffoorr		eexxaammppllee))		hahavvee
                                                                                                                                                                                           bbeeeen	n	sshihiffttiingng.”
                                                                                                                                               7	/	34                                                                                                                                                        8	/	34
                                                                                                                                     Is	it	easier	to	change	and	fix	existing	languages?
                   Usage	of	C++	vs	Go	vs	Rust
                                                                                                                                        Backward-compatible	changes
                                                                                                                                        Backward-incompatible	changes
                                                                                                                                          Some	changes	are	too	difficult
                                                                                                                                          Introducing	Unicode	in	Python	and	PHP
                                                                                                                                          Garbage	collector	in	C++
                                                                                                                                        Those	changes	introduce	long	development	time	and
                                                                                                                                        long	acceptance	time
                                                                                                                                          Python	3.0	was	introduced	in	2008
                                                                                                                                          PHP	6	was	started	in	2006	and	never	released,	PHP	7	released	in	December
                                                                                                                                          2015
                                                                                                       9	/	34                                                                                                           10	/	34
                                                                                                                                      Design	Considerations	for	a	Programming	Language
                                         PHP	Criticism
                                                                                                                                       A	programming	language	must	be:
                      PHP	was	not	designed,	but	developed
                                                                                                                                       pprreeddicictabtabllee
                        Inconsistent	naming	of	functions	and	order	of	their	parameters
                                                                                                                                         Source	code	is	read	more	often	than	written,	a	human	must	be	able	to	understand	what	he	read
                         Some	function	names	were	chosen	to	improve	the	distribution	of	hash	values
                        Rather	than	aborting	with	an	error,	PHP	will	try	to	guess	the	developer	intent                                 ccoonsnsisistetentnt
                         Problems	with	weak	typing                                                                                       Knowing	part	of	a	language	should	help	learn	other	parts
                        PHP	compilation	options,	server	configurations,	applications	configurations	and
                                                                                                                                       ccooncncisisee,	ssimimppllee	and	ggeenenerralal
                        global	states	can	affect	function	behaviour
                                                                                                                                       rreelliabiabllee
                        Incoherent	mix	between	functional	and	object-oriented	programming
                                                                                                                                         Programming	language	are	here	to	solve	problem,	not	to	introduce	new	one
                        ...
                                                                                                                                       ddeebbugugggababllee
                                                                                                                                         Developers	will	inevability	write	bugs,	they	need	all	the	help	they	can	get	to	find	them
                      You	need	a	vision	and	a	design	when	developing
                                                                                                                                       imimpplleemmeentabntabllee
                      a	programming	language!
                                                                                                                                         This	reduce	the	number	of	bugs	in	the	language	implementation
                                                                                                      11	/	34                                                                                                           12	/	34
                                                     Design	choices	for	a	Programming	Language
        What	is	the	purpose	of	the	new	language?
         First	question	is,	a	new	language,	what	for?
                                                       Programming	Paradigm
          Querying	knowledge?
                                                       Dynamic	vs	Static	(Typing...)
          Distributed	numerical	computation?
          Writting	drivers	for	an	Operating	System?
                                                       Low-level	vs	High-level
          Writting	web	applications?
          Answering	the	Ultimate	Question	of	Life,	the	Universe,	and
                                                       Direct	interpretation,	Virtual	Machine,
          Everything
                                                       JIT,	Native	Compilation...
          A	programming	language	for	teaching	about	interpreters	and
          programming	models/paradigms
          ...
                                         13	/	34                                      14	/	34
                                                               Declarative
                                                       Expresses	logic	of	computation	without
                                                       control	flow:
             Choosing	an	appropriate
                                                        What	should	be	computed	and	not	how	it	should	be
                                                        computed.
        Programming	Language	Paradigm
                                                       Examples:	XML/HTML,	antlr4/yacc,
                                                       make/ants...
                                                                                      16	/	34
The words contained in this file might help you see if this file matches what you are looking for:

...Lectures introduction concepts and models of programming languages declarative computation model techniques implementation tdda data program structure concurrency message passing explicit state imperative summary cyrille berger shared relational specialized macro running natively jit garbage collection ssuummmmaarryy paradigms lecture content choosing an appropriate language paradigm the dierent types interpreter gui do we need new in early days object orientation problems infrastructure multi threading distributed computing develop a better syntax motivation for creating rust go rob pike creator couple years ago several us at google became little graydon hoare lot oobbvviioousus ggoooodd iiddeeaass known loved other frustrated with software development process particularly using c to hahavveenn tt mmaaddee iitt into widely used systems or are deployed write large server found that bbiinanarriieess tteendndeedd ttoo bbee mmucuch h ttoooo bbiigg have very poor unsafe hostile memory ther...

no reviews yet
Please Login to review.