Ada Programlama Dili Temelleri

Bölüm 1

Ada Programlama Ortamının Tanıtımı

Bölüm 1 Sayfa 2

1.3 - Ada Derleyicileri

Ücretsiz Ada derleyicilerinin en tanınmışları, GNAT ve Objective Ada derleyicileridir. Biz GNAT derleyicisi ile çalışacağız. Bu derleyici, http://libre.adacore.com/libre/download2/ sitesinden indirilebilir. GNAT derleyicisi GNU General Public Licence (GPL) koşulları ile dağıtılmaktadır. Bu lisans, koşulları içerisinde, her türlü ticari ve bilimsel kullanım için geçerlidir. GNU (Free Software Foundation) GNAT derleyicisinin her türlü ticari ve bilimsel amaçla kullanımı ücretsizdir. Ücretsiz GNAT -GPL derleyicisi çok gelişkindir ve hemen her uygulama amacı için yeterlidir. En yeni GNAT - GPL derleyicisi, haziran 2010 da kullanıma verilen GNAT 2010 derleyicisidir. GNAT 2010 yeni oluşturulmakta olan Ada 2012 standartlarını kısmen desteklemektedir. Daha gelişkin bir sürümünün 2011 de kullanıma girebileceği belirtilmektedir. Kurulum için, gnat-gpl-2010-i686-pc-mingw32-bin.exe dosyasının çalıştırılması ,yeterlidir. Kurulum sonunda GNAT derleyicisi sistem yoluna (PATH) yerleşmiş olur. Kurulumun gerçekleştiğini, bir komut satırından (command shell) gnat yazarak çalışması izlenebilir. Kurulum tamamlanınca yine aynı siteden indirilecek Ada win-32 binding işlevini gerçekleştiren, win32ada-gpl-2010.exe dosyasının da çalıştırılarak Ada win-32 binding işleminin gerçekleştirilmesi sağlık verilir. Bu dosya her türlü işlemi kendisi yaparak işlevi gerçekleştirmektedir.

Ada programları, en basit bir metin yazıcısı örnek olarak notepad ile kolayca yazılarak komut satırı üzerinden derlenebilir. Komut satırı Türkçe karakterleri desteklemeyebilir, fakat bunun bir önemi yoktur çünkü Türkçe karakterlerin desteklendiği çıkış ortamları bulunmaktadır.

1.3.1 - Ada Programlarıının Komut Satırı Üzerinden Derlenip Çalıştırılması

Ada programları herhangibir metin editöründe, yazılabilir ve programlar

<Program_Adı>.ada
		

veya

<Program_Adı>.adb (Ada Body)
		

veya

<Program_Adı>.ads (Ada Specification)
		

dosyaları olarak saklanabilir. Ada programlama dili programın tanım kısmının (specs) ve programın çalışabilir kısmının (body) ayrı ayrı derlenmesine olanak sağlar. Eğer bu iki kısım birlikte derlenecekse, program *.adb veya *.ada olarak saklanıp derlenebilir. Çalıştırılabilir kısımları olan programları spec (*.ads) dosyaları halinde saklamaktan kaçınınız. Bu programlar, *.adb veya *.ada olarak saklanarak birlikte derlenmelidir. Örnek olarak deneme.ada olarak saklanmış bir program olduğunu düşünelim. Bundan sonra bir komut satırı penceresi açılır ve

gcc - deneme.ada
		

yazılır. Derleyici, programı derler ve hata yoksa, deneme.o (object) ve deneme.ali (Ada Library Information) dosyalarını oluşturur. Bundan sonra komut satırına

gnatbind deneme.ali veya sadece gnatbind deneme
		

ve

gnatlink deneme.ali veya sadece gnatlink deneme
		

yazılarak, çalıştırılabilir deneme.exe dosyası oluşturulur ve komut satırı üzerinden çalıştırılabilir.

Bu işlem kısa olarak GNAT derleyicisinin gnatmake fonksiyonu kullanılarak da gerçekleştirilebilir. Bu durumda,

gnatmake deneme.ada 
		

yazılması yeterlidir. Programda hata yoksa derleyici çalıştırılabilir deneme.exe dosyasını oluşturur. Hata varsa, derleyici hatanın giderilmesi için programcıyı yönlendirir. GNAT 2010 derleyicisi varsayılan olarak ADA 95 modundadır. Yani ADA 95 programları sorunsuzca derlenir. Burada uygulanan gnatmake programı son derce güçlü bir derleme yardımcısıdır. Her defa gerekli bağımlılıkları kendisi bulur ve uygular. Büyük programlar için gnatmake derleme yardımcısının kullanılması kuvvetle sağlık verilir çünkü bütün bu bağımlıklarının elle girilmesi kolay olmayabilir.

Tüm derleme aşamalarını gerçekleştirebilen gnatmake komutunun çeşitli anahtarları (switch) bulunmaktadır. Bu anahtarların kullanılmaları, programcının gereksinmelerine bağlıdır. Aşağıda GNAT 2010 için gnatmake programının tüm anahtarları listelenmiştir :

	>gnatmake
Usage: gnatmake opts name {[-cargs opts] [-bargs opts] [-largs opts] [-margs opts]}
name is one or more file name from which you can omit the .adb or .ads suffix
gnatmake switches:
-a Consider all files, even readonly ali files
-b Bind only
-B Build, bind and link full project
-c Compile only
-C Cache source mappings: invoke compiler with temp mapping file
-C=mapp Cache source mappings: invoke compiler with mapping file mapp
-D dir Specify dir as the object directory
-eI Index of unit in multi-unit source file
-eL Follow symbolic links when processing project files
-eS Echo commands to stdout instead of stderr
-f Force recompilations of non predefined units
-F Full project path name in brief error messages
-i In place. Replace existing ali file, or put it with source
-jnum Use nnn processes to compile
-k Keep going after compilation errors
-l Link only
-m Minimal recompilation
-M List object file dependences for Makefile
-n Check objects up to date, output next file to compile if not
-o name Choose an alternate executable name
-p Create missing obj, lib and exec dirs
-Pproj Use GNAT Project File proj
-q Be quiet/terse
-R Do not use a run_path_option when linking
-s Recompile if compiler switches have changed
-u Unique compilation, only compile the given files
-U Unique compilation for all sources of all projects
-v Display reasons for all (re)compilations
-vPx Specify verbosity when parsing GNAT Project Files
-we Treat all warnings as errors
-wn Normal warning mode (cancels -we/-ws)
-ws Suppress all warnings
-x Allow compilation of needed units external to the projects
-Xnm=val Specify an external reference for GNAT Project Files
-z No main subprogram (zero main)
--GCC=command Use this gcc command
--GNATBIND=command Use this gnatbind command
--GNATLINK=command Use this gnatlink command
Project, Source and Library search path switches:
-aPdir Add directory dir to project search path
-aLdir Skip missing library sources if ali in dir
-Adir like -aLdir -aIdir
-aOdir Specify library/object files search path
-aIdir Specify source files search path
-Idir Like -aIdir -aOdir
-I- Don't look for sources & library files in the default directory
-Ldir Look for program libraries also in dir
-nostdinc Don't look for sources in the system default directory
-nostdlib Don't look for library files in the system default directory
--RTS=dir specify the default source and object search path
--subdirs=dir real obj/lib/exec dirs are subdirs
--unchecked-shared-lib-imports
Allow shared libraries to import static libraries
To pass an arbitrary switch to the Compiler, Binder or Linker:
-cargs opts opts are passed to the compiler
-bargs opts opts are passed to the binder
-largs opts opts are passed to the linker
-margs opts opts are passed to gnatmake
Compiler switches (passed to the compiler by gnatmake):
-fstack-check Generate stack checking code
-fno-inline Inhibit all inlining (makes executable smaller)
-fpreserve-control-flow Preserve control flow for coverage analysis
-g Generate debugging information
-Idir Specify source files search path
-I- Do not look for sources in current directory
-O[0123] Control the optimization level
-gnata Assertions enabled. Pragma Assert/Debug to be activated
-gnatA Avoid processing gnat.adc, if present file will be ignored
-gnatb Generate brief messages to stderr even if verbose mode set
-gnatB Assume no bad (invalid) values except in 'Valid attribute
-gnatc Check syntax and semantics only (no code generation)
-gnatC Generate CodePeer information (no code generation)
-gnatd? Compiler debug option ? ([.]a-z,A-Z,0-9), see debug.adb
-gnatD Debug expanded generated code (max line length = 72)
-gnatDnn Debug expanded generated code (max line length = nn)
-gnatec=? Specify configuration pragmas file, e.g. -gnatec=/x/f.adc
-gnateD? Define or redefine preprocessing symbol, e.g. -gnateDsym=val
-gnatef Full source path in brief error messages
-gnateG Generate preprocessed source
-gnateInn Index in multi-unit source, e.g. -gnateI2
-gnatem=? Specify mapping file, e.g. -gnatem=mapping
-gnatep=? Specify preprocessing data file, e.g. -gnatep=prep.data
-gnateS Generate SCO (Source Coverage Obligation) information
-gnatE Dynamic elaboration checking mode enabled
-gnatf Full errors. Verbose details, all undefined references
-gnatF Force all import/export external names to all uppercase
-gnatg GNAT implementation mode (used for compiling GNAT units)
-gnatG Output generated expanded code (max line length = 72)
-gnatGnn Output generated expanded code (max line length = nn)
-gnath Output this usage (help) information
-gnati? Identifier char set (?=1/2/3/4/5/8/9/p/f/n/w)
-gnatI Ignore all representation clauses
-gnatjnn Format error and warning messages to fit nn character lines
-gnatk Limit file names to nn characters (k = krunch)
-gnatl Output full source listing with embedded error messages
-gnatl=f Output full source listing to specified file
-gnatL List corresponding source text in -gnatG or -gnatD output
-gnatmnn Limit number of detected errors/warnings to nn (1-999999)
-gnatn Inlining of subprograms (apply pragma Inline across units)
-gnatN Full (frontend) inlining of subprograms
-gnato Enable overflow checking (off by default)
-gnatO nm Set name of output ali file (internal switch)
-gnatp Suppress all checks
-gnatP Generate periodic calls to System.Polling.Poll
-gnatq Don't quit, try semantics, even if parse errors
-gnatQ Don't quit, write ali/tree file even if compile errors
-gnatr Treat pragma Restrictions as Restriction_Warnings
-gnatR? List rep info (?=0/1/2/3 for none/types/all/variable)
-gnatR?s List rep info to file.rep instead of standard output
-gnats Syntax check only
-gnatS Print listing of package Standard
-gnatt Tree output file to be generated
-gnatTnn All compiler tables start at nn times usual starting size
-gnatu List units for this compilation
-gnatU Enable unique tag for error messages
-gnatv Verbose mode. Full error output with source lines to stdout
-gnatVxx Enable selected validity checking mode, xx = list of parameters:
a turn on all validity checking options
c turn on checking for copies
C turn off checking for copies
d turn on default (RM) checking
D turn off default (RM) checking
e turn on checking for elementary components
E turn off checking for elementary components
f turn on checking for floating-point
F turn off checking for floating-point
i turn on checking for in params
I turn off checking for in params
m turn on checking for in out params
M turn off checking for in out params
o turn on checking for operators/attributes
O turn off checking for operators/attributes
p turn on checking for parameters
P turn off checking for parameters
r turn on checking for returns
R turn off checking for returns
s turn on checking for subscripts
S turn off checking for subscripts
t turn on checking for tests
T turn off checking for tests
n turn off all validity checks (including RM)
-gnatwxx Enable selected warning modes, xx = list of parameters:
a turn on all info/warnings marked below with +
A turn off all optional info/warnings
.a*+ turn on warnings for failing assertion
.A turn off warnings for failing assertion
b+ turn on warnings for bad fixed value (not multiple of small)
B* turn off warnings for bad fixed value (not multiple of small)
.b*+ turn on warnings for biased representation
.B turn off warnings for biased representation
c+ turn on warnings for constant conditional
C* turn off warnings for constant conditional
.c+ turn on warnings for unrepped components
.C* turn off warnings for unrepped components
d turn on warnings for implicit dereference
D* turn off warnings for implicit dereference
e treat all warnings (but not info) as errors
.e turn on every optional info/warning (no exceptions)
f+ turn on warnings for unreferenced formal
F* turn off warnings for unreferenced formal
g*+ turn on warnings for unrecognized pragma
G turn off warnings for unrecognized pragma
h turn on warnings for hiding variable
H* turn off warnings for hiding variable
.h turn on warnings for holes in records
.H* turn off warnings for holes in records
i*+ turn on warnings for implementation unit
I turn off warnings for implementation unit
.i turn on warnings for overlapping actuals
.I* turn off warnings for overlapping actuals
j+ turn on warnings for obsolescent (annex J) feature
J* turn off warnings for obsolescent (annex J) feature
k+ turn on warnings on constant variable
K* turn off warnings on constant variable
l turn on warnings for missing elaboration pragma
L* turn off warnings for missing elaboration pragma
m+ turn on warnings for variable assigned but not read
M* turn off warnings for variable assigned but not read
.m* turn on warnings for suspicious modulus value
.M turn off warnings for suspicious modulus value
n* normal warning mode (cancels -gnatws/-gnatwe)
o* turn on warnings for address clause overlay
O turn off warnings for address clause overlay
.o turn on warnings for out parameters assigned but not read
.O* turn off warnings for out parameters assigned but not read
p+ turn on warnings for ineffective pragma Inline in frontend
P* turn off warnings for ineffective pragma Inline in frontend
.p+ turn on warnings for suspicious parameter order
.P* turn off warnings for suspicious parameter order
q*+ turn on warnings for questionable missing parenthesis
Q turn off warnings for questionable missing parenthesis
r+ turn on warnings for redundant construct
R* turn off warnings for redundant construct
.r+ turn on warnings for object renaming function
.R* turn off warnings for object renaming function
s suppress all info/warnings
.s turn on warnings for overridden size clause
.S* turn off warnings for overridden size clause
t turn on warnings for tracking deleted code
T* turn off warnings for tracking deleted code
u+ turn on warnings for unused entity
U* turn off warnings for unused entity
.u turn on warnings for unordered enumeration
.U* turn off warnings for unordered enumeration
v*+ turn on warnings for unassigned variable
V turn off warnings for unassigned variable
.v*+ turn on info messages for reverse bit order
.V turn off info messages for reverse bit order
w*+ turn on warnings for wrong low bound assumption
W turn off warnings for wrong low bound assumption
.w turn on warnings on pragma Warnings Off
.W* turn off warnings on pragma Warnings Off
x*+ turn on warnings for export/import
X turn off warnings for export/import
.x+ turn on warnings for non-local exception
.X* turn off warnings for non-local exception
y*+ turn on warnings for Ada 2005 incompatibility
Y turn off warnings for Ada 2005 incompatibility
z*+ turn on warnings for suspicious unchecked conversion
Z turn off warnings for suspicious unchecked conversion
* indicates default in above list
+ indicates warning flag included in -gnatwa
-gnatW Wide character encoding method (h/u/s/e/8/b)
-gnatx Suppress output of cross-reference information
-gnatX Language extensions permitted
-gnaty Enable default style checks (same as -gnaty3abcefhiklmnprst)
-gnatyxx Enable selected style checks xx = list of parameters:
1-9 check indentation
a check attribute casing
A check array attribute indexes
b check no blanks at end of lines
B check no use of AND/OR for boolean expressions
c check comment format
d check no DOS line terminators
e check end/exit labels present
f check no form feeds/vertical tabs in source
g check standard GNAT style rules
h check no horizontal tabs in source
i check if-then layout
I check mode in
k check casing rules for keywords
l check reference manual layout
Lnn check max nest level < nn
m check line length <= 79 characters
n check casing of package Standard identifiers
Mnn check line length <= nn characters
N turn off all checks
o check subprogram bodies in alphabetical order
O check overriding indicators
p check pragma casing
r check casing for identifier references
s check separate subprogram specs present
S check separate lines after THEN or ELSE
t check token separation rules
u check no unnecessary blank lines
x check extra parentheses around conditionals
y turn on default style checks
- subtract (turn off) subsequent checks
+ add (turn on) subsequent checks
-gnatyN Cancel all previously set style checks
-gnatzc Distribution stub generation for caller stubs
-gnatzr Distribution stub generation for receiver stubs
-gnat83 Enforce Ada 83 restrictions
-gnat95 Ada 95 mode (default)
-gnat05 Enforce Ada 2005 restrictions
-gnat12 Allow Ada 2012 extensions
-gnat-p Cancel effect of previous -gnatp switch
-gnatiw Wide-character codes (that is, codes greater than 255) allowed in identifiers

Başlangıçta programcıların hiçbir anahtar kullanımına gereksinmeleri yoktur. GNAT derleyicisinin 2010 sürümü, 2009 sürümünün aksine, varsayılan olarak ADA 95 modunda gelmektedir. Ayrıca, taşma kontrolü, (overflow check) kapalıdır. Yeni başlayan kullanıcılar için başlangıçta hiçbir kontrol kullanma gereksinimi yoktur. Kullanıcılar Ada programlanmasında ilerledikçe programlarının gereği gibi derlenmesini sağlamak için GNAT (veya kullandıkları derleyici) üzerinde bilgilerini geliştirmeleri gerekli olacaktır. Bu çalışma çerçevesinde, bizim kullandığımız anahtarlar,

gnatmake   -gnat12 -gnatE -gnatX -gnatf -gnatF -gnatG -gnatl -gnato -gnatiw -fstack-check -O2 dosya_adı.adb (veya ada) (veya sadece dosya_adı)
		

olmaktadır. Fakat, bu anahtarların kullanımı kesinlikle kullanıcıların seçimine bağlıdır. Başlangıçta hiçbir anahtar kullanımı gerekli değildir.

Sonuçta oluşan deneme.exe dosyası, Windows ortamında, her yerde ve her makinede çalışabilecektir. Bu exe dosyalarının çalışması için, ne Java Sanal Makinesine ne de bir başka sanal makineye veya bir sanal Web sunucusuna gereksinme bulunmamaktadır. Ada programlarının her Windows makinesinde çalışabilen *.exe programları oluşturabilmesi üretilen programların dağıtımları sonunda sorunsuz çalıştırılabilmelerinde büyük kolaylık sağlamaktadır.

1.3.2 - Ada Programlarının Bir Tümleşik Geliştirme Ortamı (IDE) Üzerinden Geliştirilmesi

Ada, her gelişkin programlama dili gibi, bir tümleşik geliştirme ortamında daha kolaylıkla geliştirilebilir. Bu konuda, bir Eclipse plug-ini bulunmakta fakat bu platforma çok alışık olmayanlar için bunun kullanımının yeni başlayanlar için kolay olmadığı söylenebilir. Gnat derleyicisi ile birlikte gelen, Gnat Programming Studio veya kısa adı ile GPS çok iyi bir IDE olmasına karşın Türkçe karakterleri desteklememektedir. Bu konuda AdaCore'a başvurumuz devam etmektedir. AdaCore 2011 de kullanıma girebilecek yeni GPS sürümünde Türkçe karakter setinin bulunacağını bildirmiştir. ABD Air Force Academy'nin geliştirdiği IDE olan ADAGIDE yine Türkçe karakterleri desteklememektedir. Türkçe karakterleri destekleyen en basit gibi görününen fakat tam bir tümleşik geliştirme ortamı (IDE) olan editörler arasında SciTE (Scintilla) ve Neoxen Qwined gibi IDE sistemleri dikkat çekmektedir. Fakat, aynı işlevi sağlayabilen başka tümleşik geliştirme ortamları da bulunabilir.

SciTE, http://www.scintilla.org/SciTEDownload.html sitesinden indirilebilir. Burada ki seçeneklerden biz full download seçeneğini seçeceğiz. Buradan i ndirilen güncel wscite.zip dosyasını açabiliriz. Bizim sürümümüz, wscite211 klasörüne açılmaktadır. Bu klasörü kullanacağımız bir yere, örnek olarak c:\program files\wscite211 olarak yerleştirebiliriz. Yerleştirilen klasörde Scite.exe dosyası çalıştırılınca Scite IDE çalışmaya başlayacaktır. Başlangıçta kolaylık olması için ada.properties dosyasını SciTE ile açalım ve en sonlara doğru 63 üncü satırı başına # işareti koyarak iptal edelim ve bunun yerine,aşağıdaki satırı ekleyelim. Yeni satırlar, şu şekilde olacaktır :

#adagcc=gcc -c $(FileNameExt)
adagcc=gnatmake -gnat12 -gnatE -gnatX -gnatf -gnatF -gnatG -gnatl -gnato -gnatiw -fstack-check -O2 $(FileNameExt)
		

Başka bir şeye dokunmadan dosyayı save edip çıkalım. SciTE kod yazım ortamının yaynında (veya seçime bağlı olarak altında) SciTE Output Pane adı verilen komut satırı kısmı (SciTE Çıkış Panosu) bulunmaktadır. Buradan komut satırı bildirimleri yazılıp çalıştırılabilir. Çalışan programların verdiği sonuçlar yine burada görüntülenir. SciTE çıkış panosunda Türkçe karakterler sorunsuzca görüntülenir.

SciTE çıkış panosunda, istenilen komut satırı komutları yazılarak Ada programları derlenebilir, fakat daha kolay bir yol vardır. SciTE menu sekmesinden tools>compile seçeneği ile geliştirilmekte olan programın saklanmış en son sürümü derlenir. Aynı menünün build seçeneği gnatmake programını çağırarak önceden Ada konfigürasyon dosyasına kaydedilmiş anahtarlar ile çalıştırarak programın hem derlenmesini hem de link aşamasını gerçekleştirir ve bir hata bulunmazsa, hem *obj hem *ali hem de çalıştırılabilir *.exe dosyasını oluşturur. Aynı menünün go seçeneği de oluşan *.exe dosyasını çalıştırarak alınan sonucu SciTe çıkış panosunda görüntüler. SciTE çıkış panosu, bir DOS komut ortamı emülatörüdür ve Türkçe karakterleri destekler.

Türkçe karakterleri destekleyen bir başka ücretsiz geliştirme ortamı JGrasp adındaki bir programdır. Bu program Auburn Üniversitesi tarafından aslında Java programları geliştirilmesine karşın başka programlar gibi Ada programların da derlenmesi için kullanılabilmektedir.

JGrasp, http://spider.eng.auburn.edu/user-cgi/grasp/grasp.pl?;dl=download_jgrasp.html sitesinden indirilebilir. Bu bir IDE olmaktan da fazla bir platform niteliğindedir. Kullanım yöntemleri aynı siteden inidirilebilir. Online yardım sistemi http://www.jgrasp.org/jgrasp/frame.htm sitesinde yayınlanmaktadır. Bu platformun derleme kolaylığı yanında program yapılarını da diyagramlar halinde grafik olarak gösteme yeteneği bulunmaktadır. JGrasp platformunun Ada programlarının geliştirilmesinde kullanımı için yardım sisteminin okunması yeterli olacaktır.

Neoxen Qwined tümleşik ortamı 2008 de son sürümü çıkan ve SciTE programına çok benzeyen bir tümleşik geliştirme ortamıdır. Aynı SciTe gibi ayarlarının konfigürasyon dosyaları aracılığı ile kolaylıkla gerçekleştirilme olanağı bulunmaktadır. Burada options >preferences>Schema Files >Edit Schema seçeneğinden ada.schema dosyası açılır ve dosyanın sonunda bulunan,

command.build.*.ads=gnatmake
		

satırı yerine,

command.build.*.ads=gnatmake  -gnat12 -gnatE -gnatX -gnatf -gnatF -gnatG -gnatl -gnato -gnatiw -fstack-check -O2 $(FileNameExt)
		

yazılır. Yine aynı dosyada

command.build.*.adb=gnatmake
		

satırı yerine,

command.build.*.adb=gnatmake  -gnat12 -gnatE -gnatX -gnatf -gnatF -gnatG -gnatl -gnato -gnatiw -fstack-check -O2 $(FileNameExt)
		

yazılır. Dosya save edilip çıkılır ve IDE yeniden başlatılırak konfigürasyon dosyasını güncellemesi sağlanır.

Proje oluşturmak gibi zorunluluklardan kaçınmak isteyen kullanıcılar, SciTE tümleşik geliştirme ortamı gibi, Neoxen Qwined tümleşik geliştirme ortamını da tercih edebilirler. Bu çalışmada birçok uygulama, Neoxen Qwined ortamında derlenmiştir. Neoxen Qwined tümleşik geliştirme ortamında programların derlenmesi için Tools menüsünün Build seçeneği kullanılır. Derlenme sonucunda hatası bulunmayan programlar, yine aynı Tools menüsünün go seçeği ile çalıştırılabilir. Neoxen Qwined tümleşik geliştirme ortamında da, yine aynı SciTE gibi bir DOS emülasyon panosu bulunmakta ve derleme sonucu oluşturulan çalışabilir *.exe dosyalarının çalışma sonuçları bu panoda görüntülenmektedir. Bu panoda da SciTE tümleşik geliştirme ortamında olduğu gibi Türkçe karakterler sorunsuzca desteklenmektedir. Neoxen Qwined programı http://qwined.org/download/download.htm adresinden indirilebilir.

1.4 - Sözdizimi Konvansiyonları

Ada saklı sözcüklerinin uygulanma yöntemleri genişletilmiş BNF (Backus-Naur Formları) yardımı ile açıklanabilir. Ada 2102 spesifikasyonu da genişletilmiş Backus-Naur formlarından yararlanmaktadır. Bu formlarda,

Bu çalışmada, Ada 2005 (Amendement 2) (Bu durumda, teklif edilen Ada 2012 spesifikasyonu anlamına gelmektedir) spesifikasyonunda verilmiş olan Backus-Naur formları aynen kullanılmıştır. Bu formlardaki İngilizce terimlerin Türkçe açıklamaları gerektiğinde yapılmıştır.

Ada 95 için bilgisayar ortamında üretilmiş olan BNF diyagramları, Ada programlama dilinin öğelerinin sözyazımında yararlanılabilecek sözel Backus-Naur formlarını görsel olarak oluşturmaktadır. Bu diyagramlar İsviçre Cenevre Üniversitesinde geliştirilmiş ve A.B.D de Washington D.C. de George Washington University sunucusunda yayınlanmaktadır. Görsel BNF diyagramlarının çok yararlı olmalarına karşın, sadece Ada 95 sürümü için hazırlanmış olduklarından, günümüzde bazı diyagramlar yeterli olmayabilirler. Bu diyagramların, çalışmalarımızda dikkatle kullanılmış olmalarına karşın, sadece Ada 2012 spesifikasyonunda tanımlı olan sözel Backus-Naur formlarının kesin geçerli olduğu gözönünde tutulmalıdır.

1.5 - Ada Programlama Dilini Nasıl Öğreneceğiz

Ada programlama dili, çok geniş kapsamlıdır. Sınırsız olanaklarına karşın, Ada programlama dili, bir üst düzey programlama dilidir. Bu dilin kullanımı, en basit gündelik hesaplamalar gibi, en alt düzeyde sistem parametrelerine erişim çalışmalarına olanak sağlayabilir. Bu kadar geniş kapsamlı ve kullanıcılara bu kadsar geniş çalışma olanağı sağlayabilen bu programlama dilinin derleyicisinin masa üstü bilgisayarlarına uygulanabilmesi, gerçekten kutlanması gereken büyük bir başarıdır. Bizim için çalışanların bizlere sağlamış oldukları bu büyük olanaktan yararlanmak gerektiği açıktır.

Ada programlama dilinin geniş kapsamı nedeni ile, bu dilin sunduğu tüm olanakların birdenbire i ncelenmesine olanak vermez. Ada programlama dili, bir programlama dilinden çok bir bilgisayar kültürüdür. Bu kültürün yavaş yavaş, anlaşılarak özümsenmesi çok daha gerçekçi olacaktır.

Ada programlama dilinin bir üst düzey programlama dili olması, bu dilin öğreniminde büyük avantaj sağlar, Bu dili öğrenmeye başlayanlar, ilk önce genel veri tipleri ile genel programlama tekniklerinin uygulanmasında deneyim kazanmalıdır. Kullanıcılar, ilk aşamada genel veri tipleri ile, program tasarımı, program akış kontrolü, alt programların organizasyonu, temel giriş/çıkış işlemleri, mantıksal işlemler, döngüler, dizlerle çalışmak, dosyalama işlemleri gibi temel işlemlerin uygulamasında yetkinlik kazanmalıdır.

Daha sonraki aşamalarda, öğrenme kapsamı daha genişletilerek, kullanıcıya özel tipler, nesye yönelik programlama, abstrakt sınıflar, kullanıcı kitaplıkları üzerinde bilgi ve deneyim kazanılmalıdır.

Bundan sonra, bellek adreslerine erişim, düşük düzeyli çalışmalar, çok kanallı programlama gibi, özel yöntemler üzerinde deneyim sağlanabilir.

Ada programlama dilinin öğrenimi, kullanıcılarının konularında ilerlemelerini sağlayan bir çalışmadır. Kullanıcılar, konularda ilerleme sağladıkça, problemlerin çözümü için yeni ve daha uygun yöntemlerle tanışır ve bu bilgiler, kendilerinde problemlerin çözümünde üstün bir yetkinlik sağlar.

Ada programlama dilinde ADA 95 spesifikasyonu temeldir. Bu spesifikasyona , nesne yönelimli programlama, Java tipi abstrakt sınıflar, çok kanallı programlama, daha kapsamlı veri tipleri konularında eklemeler yapılarak Ada 2005 ve ADA 2012 spesifikasyonları oluşturulmuştur. Bu nedenle, ilk aşamada Ada 95 kapsamında kalınacak daha sonraları Ada 2005 ile gerçekleştirilen yenilikler üzerinde durulacaktır..

En yeni GNAT derleyicileri, Ada 2012 spesifikasyonunu desteklemektedir. Bu bakımdan derleyicilerin en yeni sürümlerinin indirilip çalıştırılmasında yarar bulunmaktadır.

Program listelerinin yazımında konvansiyonel yazım kurallarına uygun davranmaya özen gösterilmiştir. Öğrencilerin de bu konuya önem vermelerini, kod yazımında, konvansiyonlara uygun ve tutarlı davranmaları gerekir. Konvansiyonlara uygun, tutarlı yazılımı olan programların ileride okunabilirlikleri daha yüksek olacak ve bu programların geliştirilmeleri daha kolay gerçekleşebilecektir.

Ada programlarında, programların çıkışları başlangıçta sadece komut satırında gerçekleşecektir. Bu aşama, kullanıcıların daha gözalıcı grafik çıktılar sunabilen programlara yöneltmemelidir. Ada programlarından elde edilecek kazanımlar, program çıktılarının görselliğinden daha fazladır. Ada programlama dilinde daha ilerdikçe görsel giriş/çıkış için yazılmış olan özel kitaplıkları kullanacak ve görselliği yüksek programlar gerçekleştirebileceğiz.

Son olarak, Ada gibi çok yetenekli ve çok geniş kapsamlı bir programlama dilinin öğrenilmesi çok kolay olmayabilir. Fakat, programcıya çok olanak sağlayabilen bir program dilini öğrenmiş olan bir programcının da sınırları, öğrendiği programlama dili kadar geniş olacaktır.

Valid XHTML 1.1