Ανάπτυξη με γλώσσες εξειδικευμένου πεδίου
Σύζευξη γνωστικού πεδίου - λογισμικού
     - Απαιτήσεις γνώσης του πεδίου κατά: 
     	
          -  το σχεδιασμό 
          
 -  την υλοποίηση 
          
 -  την επαλήθευση 
     	
 
      - Ελλείψεις ή προβλήματα επικοινωνίας οδηγούν σε αστοχίες 
     
 - Η γλώσσα εξειδικευμένου πεδίου: 
	
          -  χρησιμοποιεί το φορμαλισμό του πεδίου 
          
 -  γεφυρώνει την επικοινωνία μεταξύ του επαΐοντα και της ομάδας υλοποίησης
	
 
 
Απαιτήσεις διαλεκτικής επαΐοντα
     - Αξιοποίηση γνωστικών δεξιοτήτων 
          
 - Υποστήριξη φορμαλισμών του γνωστικού πεδίου 
     
 - Δημοσίευση 
          
 - Διάχυση, εκπαίδευση, ανασκόπηση 
     
 - Ανασκόπηση από ομότιμους επαΐοντες 
     
- Αρχειοθέτηση 
          
  - Σε μορφή κατάλληλη για ανιχνευσιμότητα 
     
 - Επιλεκτική επέμβαση 
          
 - Βελτίωση, συντήρηση, υποστήριξη 
     
 - Επαναχρησιμοποίηση
 
Προβλήματα των γλωσσών γενικής χρήσης
     - Δύσκολες στην εκμάθηση 
          
 - C++ 1997 910 σ. 
     
 - Απαιτούν μεγάλες βιβλιοθήκες υποστήριξης 
          
 - Windows API 3433 συναρτήσεις 
     
 - Ακατάλληλες για συγκεκριμένες εφαρμογές 
          
 - Συστήματα πελάτη εξυπηρετητή 
     
 - Απόσταση από το φορμαλισμό του επαΐοντα
 
Γλώσσες εξειδικευμένου πεδίου (ΓΕΠ)
     -  Γλώσσες προγραμματισμού προσαρμοσμένες σε συγκεκριμένο πεδίο 
     
 -  Παραδείγματα 
	  
          -  Lex/yacc 
          
 -  HTML 
          
 -  VHDL 
          
 -  Γλώσσες τέταρτης γενιάς
	  
 
      -  Ευσύνοπτη περιγραφή της λογικής της εφαρμογής 
     
 -  Ελάττωση της σημασιολογικής απόστασης ανάμεσα στο πρόβλημα και το πρόγραμμα
 
Παράδειγμα ΓΕΠ στην υλοποίηση μεταγλωττιστών
-  Lex - δημιουργεί κώδικα λεκτικής ανάλυσης
 -  Yacc - δημιουργεί κώδικα συντακτικής ανάλυσης
 
Παράδειγμα: κώδικας yacc:
unary_expression
: postfix_expression
| '+' cast_expression   { $$ = $2; }
| '-' cast_expression   { $$ = -$2; }
| '~' cast_expression   { $$ = ~$2; }
| '!' cast_expression   { $$ = !$2; }
;
cast_expression
: unary_expression
;
multiplicative_expression
: cast_expression
| multiplicative_expression '*' cast_expression { $$ = $1 * $3; }
| multiplicative_expression '/' cast_expression 
                {
                        if ($3 == 0) {
                                Error::error(E_ERR, "division by zero in #if expression");
                                $$ = 0;
                        } else
                                $$ = $1 / $3;
                }
| multiplicative_expression '%' cast_expression
                {
                        if ($3 == 0) {
                                Error::error(E_ERR, "modulo division by zero in #if expression");
                                $$ = $1;
                        } else
                                $$ = $1 / $3;
                }
;