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