Transcript Chapter 1

‫الفصل ‪1‬‬
‫مقدمات‬
‫‪ISBN 0-321-49362-1‬‬
‫مواضيع الفصل ‪1‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪1-2‬‬
‫أسباب دراسة مفاهيم لغات البرمجة‬
‫مجاالت البرمجة‬
‫معايير تقييم اللغة‬
‫العوامل المؤثرة على تصميم اللغة‬
‫فئات اللغة‬
‫تصميم لغة المقايضات(المفاضالت)‬
‫أساليب التنفيذ‬
‫بيئات البرمجة‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫أسباب دراسة مفاهيم لغات البرمجة‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪1-3‬‬
‫زيادة القدرة على التعبير عن األفكار‬
‫تحسين الخلفية الختيار اللغات المناسبة‬
‫زيادة القدرة على تعلم لغات جديدة‬
‫فهم أفضل ألهمية تنفيذ‬
‫عموما النهوض(التقدم) بالحوسبة‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫مجاالت البرمجة‬
‫• التطبيقات العلمية‬
‫– عدد كبير من العمليات الحسابية النقطة العائمة‬
‫– فورتران‬
‫• تطبيقات األعمال‬
‫– إصدار التقارير‪ ،‬واستخدام األرقام العشرية واألحرف‬
‫– كوبول‬
‫• الذكاء االصطناعي‬
‫– الرموز بدالً من األرقام التي تم التالعب بها‬
‫– ‪LISP‬‬
‫• برمجة األنظمة‬
‫– بحاجة إلى الكفاءة بسبب االستخدام المستمر‬
‫– ‪C‬‬
‫• برمجيات الويب‬
‫– مجموعة منتقاة من اللغات‪ :‬العالمات مثل )‪،(XHTML‬‬
‫– البرمجة النصية ( ‪PHP‬مثالً)‪ ،‬لألغراض العامة (مثالً‪ ،‬جافا)‬
‫‪1-4‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معايير تقييم اللغة‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪1-5‬‬
‫قابلية القراءة‪ :‬السهولة التي يمكن قراءة وفهم البرامج‬
‫قابلية الكتابة‪ :‬السهولة مع أي لغة يمكن استخدامها إلنشاء برامج‬
‫الموثوقية‪ :‬المطابقة للمواصفات (أي‪ ،‬ينفذ(يؤدي) إلى مواصفاته)‬
‫التكلفة‪ :‬إجمالي التكلفة النهائية‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معايير التقييم‪ :‬قابلية القراءة‬
‫• البساطة اإلجمالية‬
‫–‬
‫–‬
‫مجموعة من الميزات وبنيات يمكن التحكم فيها‬
‫القليلة ميزة تعدد (يعني القيام بنفس العملية)‬
‫الحد األدنى من عامل الحمل الزائد‬
‫–‬
‫–‬
‫يمكن الجمع بين مجموعة صغيرة نسبيا من البنى البدائية في عدد صغير نسبيا من الطرق‬
‫كل تركيبة ممكنة هي قانونية‬
‫–‬
‫وجود هياكل التحكم المعروفة (مثال‪ :‬عبارة ‪)while‬‬
‫–‬
‫وجود مرافق كافية(مالئمة) لتعريف هياكل البيانات‬
‫–‬
‫–‬
‫–‬
‫أشكال المعرف‪ :‬تكوين(تشكيل) مرنة‬
‫الكلمات الخاصة وأساليب تشكيل مجمع البيانات‬
‫الشكل والمعني‪ :‬بنى(تركيبات) تصف نفسها ‪ ،‬وكلمات دالة ذات معنى‬
‫–‬
‫• التعامدية‬
‫• عبارات التحكم‬
‫• أنواع البيانات وهياكلها‬
‫• اعتبارات بناء جملة‬
‫‪1-6‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معايير التقييم‪ :‬قابلية الكتابة‬
‫• البساطة والتعامدية‬
‫– بنيات قليلة‪ ،‬عدد صغير من األوليات‪ ،‬مجموعة صغيرة من القواعد‬
‫للجمع بينهما‬
‫• دعم للتجريد(لالستخراج)‬
‫– القدرة على تحديد واستخدام هياكل معقدة أو عمليات بالطرق التي تسمح‬
‫لتفاصيل يمكن تجاهلها‬
‫• التعبيرية‬
‫– مجموعة من طرق مريحة(مناسبة) نسبيا لتحديد العمليات‬
‫– مثال‪ :‬إدراج(تضمين) من للبيان في العديد من اللغات الحديثة‬
‫‪1-7‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معايير التقييم‪ :‬الموثوقية‬
‫• نوع التحقق‬
‫– اختبار لنوع األخطاء‬
‫• معالجة االستثناء‬
‫– اعتراض أخطاء وقت التشغيل واتخاذ التدابير التصحيحية‬
‫• التعرج‬
‫– وجود اثنين أو أكثر من أساليب المراجع متميزة لنفس موقع الذاكرة‬
‫• قابلية القراءة والكتابة‬
‫– لغة ال تعتمد طرق"طبيعية" للتعبير عن خوارزمية سوف تستخدم بالضرورة‬
‫نهوج"غير طبيعية"‪ ،‬وبالتالي تقليل االعتمادية‬
‫‪1-8‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معايير التقييم‪ :‬التكلفة‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪1-9‬‬
‫تدريب المبرمجين الستخدام اللغة‬
‫كتابة البرامج (قربه من تطبيقات معينة)‬
‫ترجمة(تجميع) برامج‬
‫تنفيذ برامج‬
‫لغة تنفيذ النظام‪ :‬توافر المجمعين مجانا ً‬
‫الموثوقية‪ :‬الموثوقية الفقيرة تؤدي إلى ارتفاع التكاليف‬
‫صيانة البرامج‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معايير التقييم‪ :‬أخرى‬
‫• القابلية للنقل‬
‫– السهولة التي يمكن نقل البرامج من تنفيذ آلخر‬
‫• العمومية‬
‫– أن تنطبق على مجموعة واسعة من التطبيقات‬
‫• ويلديفينيدنيس‬
‫– اكتمال ودقة التعريف الرسمي باللغة‬
‫‪1-10‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫العوامل المؤثرة على تصميم اللغة‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪1-11‬‬
‫معمارية الحاسوب‬
‫يتم تطوير اللغات حول معمارية الكمبيوتر الشائعة‪ ،‬والمعروفة باسم‬
‫معمارية فون نيومان‬
‫منهجيات البرمجة‬
‫منهجيات تطوير البرمجيات الجديدة (على سبيل المثال‪ ،‬تطوير‬
‫البرمجيات كائنية المنحى) أدت إلى نماذج برمجة جديدة‪ ،‬وبالتالي‬
‫لغات برمجة جديدة‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫تأثير معمارية الحاسوب‬
‫• معمارية الحاسوب المعروفة‪ :‬فون نيومان‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫اللغات الحتمية‪ ،‬األكثر انتشارا‪ ،‬بسبب أجهزة الكمبيوتر فون نيومان‬
‫البيانات والبرامج مخزنة في الذاكرة‬
‫الذاكرة منفصلة عن وحدة المعالجة المركزية‬
‫التعليمات والبيانات منقولة باألنابيب من الذاكرة إلى وحدة المعالجة المركزية‬
‫أساس للغات الحتمية‬
‫• المتغيرات نموذج خاليا الذاكرة‬
‫• عبارات التعيين نموذج األنابيب‬
‫• التكرار هو فعال‬
‫‪1-12‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫معمارية فون نيومان‬
Copyright © 2007 Addison-Wesley. All rights reserved.
1-13
‫تأثيرات منهجيات البرمجة‬
‫• الخمسينات وأوائل الستينات‪ :‬تطبيقات بسيطة؛ تقلق بشأن كفاءة الجهاز‬
‫• أواخر الستينات‪ :‬كفاءة الناس أصبحت هامة؛ قابلية القراءة و هياكل تحكم أفضل‬
‫– البرمجة المهيكلة‬
‫– التصميم من أعلى إلى أسفل وتنقيح(تحسين) تدريجي(على خطوات)‬
‫• أواخر السبعينات‪ :‬عملية المنحى لبيانات المنحى‬
‫– تجريد البيانات‬
‫• أواسط الثمانينات‪ :‬البرمجة كائنية المنحى‬
‫– تجريد البيانات ‪ +‬الوراثة ‪ +‬تعدد األشكال‬
‫‪1-14‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
‫فئات اللغة‬
‫• الحتمية‬
‫– السمات الرئيسية هي المتغيرات وعبارات التعيين‪ ،‬والتكرار‬
‫– من األمثلة‪ ،C :‬باسكال‬
‫• الوظيفية‬
‫– الوسيلة الرئيسية إلجراء العمليات الحسابية هو من خالل تطبيق وظائف للبراميترات المعطاة‬
‫– من األمثلة‪LISP, Scheme :‬‬
‫• المنطقية‬
‫– قائم على قواعد (القواعد هي محددة في أي ترتيب معين(بدون ترتيب) )‬
‫– مثال‪ :‬برولوج‬
‫• كائنية المنحى‬
‫– تجريد البيانات ‪ ،‬والوراثة‪ ،‬والربط المتأخر‬
‫– من األمثلة‪ :‬جافا‪C++ ،‬‬
‫• التوصيفية‬
‫– جديدة؛ ليست برمجة في حد ذاتها‪ ،‬بل تستخدم لتحديد تخطيط معلومات في مستندات ويب‬
‫– من األمثلة‪XML ،XHTML :‬‬
‫‪1-15‬‬
‫‪Copyright © 2007 Addison-Wesley. All rights reserved.‬‬
Language Design Trade-Offs
• Reliability vs. cost of execution
– Conflicting criteria
– Example: Java demands all references to array elements
be checked for proper indexing but that leads to
increased execution costs
• Readability vs. writability
– Another conflicting criteria
– Example: APL provides many powerful operators (and a
large number of new symbols), allowing complex
computations to be written in a compact program but at
the cost of poor readability
• Writability (flexibility) vs. reliability
– Another conflicting criteria
– Example: C++ pointers are powerful and very flexible but
not reliably used
Copyright © 2007 Addison-Wesley. All rights reserved.
1-16
Implementation Methods
• Compilation
– Programs are translated into machine
language
• Pure Interpretation
– Programs are interpreted by another
program known as an interpreter
• Hybrid Implementation Systems
– A compromise between compilers and
pure interpreters
Copyright © 2007 Addison-Wesley. All rights reserved.
1-17
Layered View of Computer
The operating system
and language
implementation are
layered over
Machine interface of a
computer
Copyright © 2007 Addison-Wesley. All rights reserved.
1-18
Compilation
• Translate high-level program (source language)
into machine code (machine language)
• Slow translation, fast execution
• Compilation process has several phases:
– lexical analysis: converts characters in the source program
into lexical units
– syntax analysis: transforms lexical units into parse trees
which represent the syntactic structure of program
– Semantics analysis: generate intermediate code
– code generation: machine code is generated
Copyright © 2007 Addison-Wesley. All rights reserved.
1-19
The Compilation Process
Copyright © 2007 Addison-Wesley. All rights reserved.
1-20
Additional Compilation Terminologies
• Load module (executable image): the user
and system code together
• Linking and loading: the process of
collecting system program and linking
them to user program
Copyright © 2007 Addison-Wesley. All rights reserved.
1-21
Execution of Machine Code
• Fetch-execute-cycle (on a von Neumann
architecture)
initialize the program counter
repeat forever
fetch the instruction pointed by the counter
increment the counter
decode the instruction
execute the instruction
end repeat
Copyright © 2007 Addison-Wesley. All rights reserved.
1-22
Von Neumann Bottleneck
• Connection speed between a computer’s
memory and its processor determines the
speed of a computer
• Program instructions often can be executed
a lot faster than the above connection
speed; the connection speed thus results in
a bottleneck
• Known as von Neumann bottleneck; it is the
primary limiting factor in the speed of
computers
Copyright © 2007 Addison-Wesley. All rights reserved.
1-23
Pure Interpretation
• No translation
• Easier implementation of programs (runtime errors can easily and immediately
displayed)
• Slower execution (10 to 100 times slower
than compiled programs)
• Often requires more space
• Becoming rare on high-level languages
• Significant comeback with some Web
scripting languages (e.g., JavaScript)
Copyright © 2007 Addison-Wesley. All rights reserved.
1-24
Pure Interpretation Process
Copyright © 2007 Addison-Wesley. All rights reserved.
1-25
Hybrid Implementation Systems
• A compromise between compilers and pure
interpreters
• A high-level language program is
translated to an intermediate language that
allows easy interpretation
• Faster than pure interpretation
• Examples
– Perl programs are partially compiled to detect errors
before interpretation
– Initial implementations of Java were hybrid; the
intermediate form, byte code, provides portability to any
machine that has a byte code interpreter and a run-time
system (together, these are called Java Virtual Machine)
Copyright © 2007 Addison-Wesley. All rights reserved.
1-26
Hybrid Implementation Process
Copyright © 2007 Addison-Wesley. All rights reserved.
1-27
Just-in-Time Implementation Systems
• Initially translate programs to an
intermediate language
• Then compile intermediate language into
machine code
• Machine code version is kept for
subsequent calls
• JIT systems are widely used for Java
programs
• .NET languages are implemented with a JIT
system
Copyright © 2007 Addison-Wesley. All rights reserved.
1-28
Preprocessors
• Preprocessor macros (instructions) are
commonly used to specify that code from
another file is to be included
• A preprocessor processes a program
immediately before the program is
compiled to expand embedded
preprocessor macros
• A well-known example: C preprocessor
– expands #include, #define, and similar
macros
Copyright © 2007 Addison-Wesley. All rights reserved.
1-29
Programming Environments
• The collection of tools used in software
development
• UNIX
– An older operating system and tool collection
– Nowadays often used through a GUI (e.g., CDE, KDE, or
GNOME) that run on top of UNIX
• Borland JBuilder
– An integrated development environment for Java
• Microsoft Visual Studio.NET
– A large, complex visual environment
– Used to program in C#, Visual BASIC.NET, Jscript, J#, or
C++
Copyright © 2007 Addison-Wesley. All rights reserved.
1-30
Summary
• The study of programming languages is valuable for
a number of reasons:
– Increase our capacity to use different constructs
– Enable us to choose languages more intelligently
– Makes learning new languages easier
• Most important criteria for evaluating programming
languages include:
– Readability, writability, reliability, cost
• Major influences on language design have been
machine architecture and software development
methodologies
• The major methods of implementing programming
languages are: compilation, pure interpretation, and
hybrid implementation
Copyright © 2007 Addison-Wesley. All rights reserved.
1-31