Lecture 1
Lecture 1
OVERVIEW Part-1
Description
This course introduces students to the main constructs of contemporary
programming languages and provides the tools needed to evaluate the existing and
future programming languages.
Objectives
The purpose of this course is to :
1. Provide students with better understanding of significance of
implementation.
2. Acquaint students with the ability to learn new languages.
3. Introduce students to various programming language concepts including
binding, scope, lifetime, parameter passing etc.
4. Enable students to be efficient in their work.
األساسية للبرمجة في العموم و الفروقات بين لغات البرمجة عشان الطالب يخرج عارفconceptsالكورس دا بيعرفنا الـ
.paradigmsإزاي يقدر يعمل لغة برمجة خاصة بيه و يقدر يحدد أسس بناءها و دا طبعًا هيحصل بعد فهمه للـ
TEXT-BOOK
CONCEPTS OF PROGRAMMING Concepts, Techniques, and Models of
TH
LANGUAGE, 10 BY ROBERT W. Computer Programming BY PETER
SEBESTA VAN ROY AND SEIF HARIDI
1 Minders’22 AC
Chapter –1,BY ROBERT
1. Reasons for Studying Concepts of Programming Languages.
3 Minders’22 AC
Programming Domains: Artificial Intelligence
5 Most Popular AI Programming Languages
• LISP.
• Python.
• C++.
• Java.
• Prolog.
.AIو دي أمثلة للغات إللى بتُستخدم في الـ
.. هنحتاج نشتغل بلغات برمجة زي المتوضحين في الجدول دا كداwebsites طيب لو هنعمل
4 Minders’22 AC
Language Evaluation Criteria
فإيه إللى هيعرفك إن لغة البرمجة دي كويسة و ال، على لغة معينةjudge طب لما تيجي تعمل لغة برمجة جديدة أو لو هتعمل
و هنعرفهمCost وReliability وWritability وReadability : بتقيم أي لغة برمجة و همCriteria < عندنا-- أل؟
.بالتفصيل
• Readability: the ease with which programs can be read and understood.
ً ، يعني سهلة القراءةread من اسمهاReadabilityالـ
فدا مش مفهوم أوي فكداx++ مثال لو الكود فيه متغير بالشكل دا
.. هنا مش أحسن حاجة و هكذاReadabilityالـ
• Writability: the ease with which a language can be used to create programs.
.) من اسمها إنها تكون سهلة الكتابةwrite (جاية منWritabilityالـ
5 Minders’22 AC
• Orthogonality.
o A relatively small set of primitive constructs can be combined in a
relatively small number of ways to build the control and data
structures of the language.
− Primitive data type (int, float, double, character).
− Two type operators (array, pointer).
o Every possible combination is legal.
مشprimitive أوsmall data type و بنقسمها لـdata type دي المقصود بيها إننا عندنا أكتر منOrthogonalityالـ
.combination و األهم من دا إننا نعملcomplicated
• Data types.
o Adequate predefined data types.
− If there isn't Boolean data type what is this case meaning?
Timeout=1 (it is true or value one).
Timeout=true(it is clear to know that).
string و الinteger بتاعته و تحدد إذا كانdata type بالـvariable من األفضل أنك تعرف من األول كلData typesالـ
وtrue or value one طب يا ترى هو نوعه إيه؟1 إنه بيساويvariable تعرف ً ، و هكذاboolean و ال
َّ فمثال إنت ممكن
. بتاعته من البدايةdata typeبنا ًءا عليه الزم تحدد الـ
3. Expressivity:
o A set of relatively convenient ways of specifying operations.
o Example: the inclusion of for statement in many modern languages.
ً إللى هتتمoperationهنا المقصود إن يكون في اللغة تعبيرات نقدر منها نحدد نوع الـ
.for statement مثال زي
6 Minders’22 AC
Evaluation Criteria: Reliability
1. Type checking:
o Testing for type errors.
2. Exception handling:
o Intercept run-time errors and take corrective measures.
يعنى إننا نقدر نعتمد على اللغة دي و ماتقعش مننا طب إزاي؟Reliabilityالـ
. دي و نهندلهاerrors و نحدد نوع الـcheck و نـtest فنقدر نـerrors عن طريق إن لو حصل فيها
3. Aliasing:
o Presence of two or more distinct referencing methods for the same
memory location.
.لو عندنا أكتر من بوينتر بيشاوروا على نفس المكان في الميموري فإزاي نقدر نعرف إنهي فيهم أحق بالمكان دا في الميموري؟
7 Minders’22 AC
• Programming Methodologies
o New software development methodologies (e.g., object-oriented
software development) led to new programming paradigms and by
extension, new programming languages.
ً OOP زي الـsoftware طرق جديدة في الـdevelopكمان أما بنـ
new programming paradigms مثال دا بيخلينا نعرف
.و بالتالي بنبني لغات برمجة جديدة
2. Repeat forever.
• Fetch the instruction pointed by the counter.
8 Minders’22 AC
• Increment the counter. لو أنا في الـ main programو واقف فى سطر كود
فى IDEما فالـ IDEدي متخزنة في الـ RAMيعني
• Decode the instruction. في الـ .Memoryفأنا في الـ main memoryطالما
قولت runفالكومبيلر بتاعي في الـ IDEاتعمله load
• Execute the instruction. في الـ ،Memoryفأنا كاتبة شوية codeو الكود إللى
أنا كاتباه دا واقفة عند int x=0فعندي حاجة اسمها
3. End repeat. program counterدا بيكون شايف أنا واقف في
أنهي مكان و بعدها بيعمل الـ Von Neumannدا إللى
هي .Fetch Execute Cycle
Fetchيعني هياخد واحدة من الـ instructionsبتاعتي
في الكود و يعرف إيه القيم إللى فيها و بعدين يعملها
executeيزود القيم إللى فيها أو ينقصها whatever
هيعمل إيه و يرجع تاني للـ main memoryعشان
يزود الـ program counterبتاعي .العملية دي ممكن
تأثر عليك في الـ.Programming Languages
Language Categorical
Hundreds of programming languages are in use...
إحنا عندنا لغات برمجة كتير أوي و كل لغة منهم عبارة عن مجموعة من الـ paradigmsو كل paradigmليه concepts
عايزين نعرفها.
Each language has its own syntax, its own semantics, its own system, and its own
quirks.
. و نظامها العام الخاصين بيهاsemantics و الـsyntaxكل لغة برمجة ليها الـ
• We could pick three languages, like Java, Erlang, and Haskell, and structure
our course around them.
• This would make the course complicated for no good reason.
ً على سبيل المثال، إللى عايز اتعلمها و أعرفهاparadigmsو بالتالي ماينفعش أقول إني هتعلم لغات البرمجة إللى بتدعم الـ
مثال
.Haskell وErlang وJava أقول أنا همسك تالت لغات برمجة أدرسهم و هما
paradigms أركز على تعلم الـ+ كدا الموضوع هيكون صعب عليا إني أتعلم لغات البرمجة و طريقة كتابة كل واحدة منهم
.الموجودة في كل لغة منهم و بالتالي الكورس هيكون معقد بالنسبالي
Our pragmatic solution: we use one language, Oz, a research language designed for
many paradigms.
• This lets us focus on the real issues.
إللى محتاجين نتعلمهم و بكدا إحنا ركزنا علىparadigms دي بتدعم كل الـOZ عشان كدا هنستخدم لغة واحدة بس و اسمها
المختلفة بدون ما نضطر نتعلم أكتر من لغة برمجة عشان نعرفparadigmsتحقيق هدفنا األساسي و هو تعلم الـ
. بتاعتهمparadigmsالـ
يعني مش بنشتغل بيها في مشاريع واقعية هي بس بتفيدنا عشان نتعلمbusiness language دي مش لغةOZ languageالـ
. إللى محاجين نتعلمهاparadigms معينة و هي كل الـconcepts
10 Minders’22 AC
How can we combine paradigms in a program?
• Each paradigm is a different way of thinking.
o How can we combine different ways of thinking in one program?
• We can do it using the concept of a kernel language.
o Each paradigm has a simple core language, its kernel language, that
contains its essential concepts.
o Every practical language, even if it’s complicated, can be translated
easily into its kernel language.
o Even very different paradigms have kernel languages that have much
in common; often there is only one concept difference.
• We start with a simple kernel language that under lies our first paradigm;
functional programming.
o We then add concepts one by one to give the other paradigms.
واحد؟program المختلفة دول مع بعض فيparadigms بين الـcombineطب إزاي إحنا هنقدر نـ
فإزاي بردو نجمع بين أكتر من طريقة تفكير فيparadigms ليه طريقة تفكير مختلفة بتميزه عن غيره من الـparadigm كل
؟programنفس الـ
كل، كل لغة عن غيرهاparadigm و بنعتبره كإنه الزتونة إللى بتميزkernelنقدر نعمل كدا عن طريقة حاجة اسمها الـ
. خاص بيهkernel ليهparadigm
يعنيparadigms لباقي الـkernels إللى على أساسه اتحطت باقي الـmain kernel أو الـbase kernel هو الـkernel عندنا
و كل مرة هنزود حاجة جديدة عليه فهيكونوليfunctional paradigms بتاع الـkernel دا هوالـmain kernelالـ
. جديد خاص بيه و مختلف عن إللى قبلهkernel جديد بـparadigm
One language per paradigm is too much to study in a course, since each language
is already complicated by itself.
• Solution: use one research language, Oz, that can express many paradigms.
إللى بتدعمOZ دا هيكون كتير و معقد لتطبيقه في كورس واحد و بالتالي هنستخدم لغةparadigm دراسة لغة برمجة لتعلم كل
.paradigmsاستخدام كل الـ
Realistic programs need to combine paradigms, but how can we do it since each
paradigm is a different way of thinking?
11 Minders’22 AC
• Solution: define paradigms using kernel languages, since different
paradigms have kernel languages with much in common.
• Kernel languages allow us to define many paradigms by focusing on their
differences, which is much more economical in time and effort.
إللى محتاجه و بالتالي إزايparadigmطيب كل برنامج عايزين ننفذه في أرض الواقع ليه طريقة تفكير مختلفة على حسب الـ
و إللي بيميزparadigm الخاص بكلkernel language دي في نفس البرنامج؟ عن طريق الـparadigmsهنجمع بين الـ
. و بعضهاparadigmsاالختالفات بين الـ
Paradigms
• Functional programming.
• Imperative programming.
• Object-oriented programming.
• Deterministic dataflow programming.
• Multi-agent dataflow programming.
• Active objects.
. إللى هندرسها إن شاء هللاparadigmsو دول الـ
12 Minders’22 AC
What we study?
• These are probably the most important programming paradigms for general
use.
o But there are many other paradigms, made for other problems: this
course give you a good foundation for studying them later if you wish.
الموجودة و معرفة الفروقات بينهم دا هيخلي الكورس دا بدايةparadigmsطيب إحنا كدا عرفنا هندرس إيه و هو تعلم أهم الـ
.paradigmsكويسة ألي حد عايز يكمل تعمق أكتر في دراسة و تعلم باقي الـ
Syllabus
• Introduction.
• Identifiers and environments Of Mozart Software.
• Functional programming.
o Variables Declaration.
o Recursion, loops, and invariant programming.
o Lists and pattern matching.
o Higher-order programming.
o Trees and Record.
o Kernel languages.
• Imperative programming.
• Object Oriented Programming.
• Deterministic Programming.
.و دا محتوي الكورس بتاعنا كله
Questions
• What is a paradigm?
"an approach for programming a computer based on a coherent set of
principles or a mathematical theory".
.. و وضحناه فوق قبل كداparadigmدا تعريف الـ
13 Minders’22 AC
Practical Exercise
declare
X=42
Z=~3
}{Browse X )% (a
الـ outputهنا هيكون 42
}{Browse Z
الـ outputهنا هيكون ~3
declare
Y=X+5
}{Browse Y )% (b
الـ outputهنا هيكون47
declare
X=1234567890
}{Browse X
الـ outputهنا هيكون 1234567890
شوية معلومات بسيطة لكتابة الـ OZهي إن بنعرف الـ variablesبـ Capital letterيعني الزم أول حرف للمتغير يكون
،Capitalتاني حاجة الزم ابدأ تعريف أي حاجة بكلمة declareفي البداية ،و لو عايزين نطبع بنكتب }( {Browse Xو
الـ Browseدي Methodمتعرفة و أنا بنادي عليها و دي طريقة الـ Callingفي الـ )OZ languageو بنعتبر إن الـ Xدا
variableأنا عرفته قبل كدا .و الزم الـ variableيبدأ بحرف Capitalزي ما عرفنا و لو بدأ بحرف smallهيكون اسمه
atomيعني الـ OZبتعتره كإنه Stringو دا عشان تقدر تفرق بين الـ paradigmsو بعضها.