Paskal (dasturlash tili) - Pascal (programming language)

Paskal
LagrangePAS.jpg
Paradigma
OilaWirth Paskal
LoyihalashtirilganNiklaus Virt
Birinchi paydo bo'ldi1970; 50 yil oldin (1970)
Matnni yozish
Fayl nomi kengaytmalari.pp, .pas, .inc,
Mayor amalga oshirish
Lahjalar
Ta'sirlangan
Ta'sirlangan

Paskal bu majburiy va protsessual dasturlash tili tomonidan ishlab chiqilgan Niklaus Virt yaxshi dasturlash usullaridan foydalanishni rag'batlantirishga mo'ljallangan kichik, samarali til sifatida tizimli dasturlash va ma'lumotlarning tuzilishi. Bu frantsuz matematikasi, faylasufi va fizigi sharafiga nomlangan Blez Paskal.

Wirthning kitobi asosida, Algoritmlar + Ma'lumotlar tuzilmalari = Dasturlar, Paskal tili naqsh asosida ishlab chiqilgan ALGOL 60 til. Wirth tilning bir qismi sifatida tilni takomillashtirish jarayonida qatnashgan ALGOL X harakatlar va sifatida tanilgan versiyasini taklif qildi ALGOL V. Bu qabul qilinmadi va ALGOL X jarayoni sustlashdi. 1968 yilda Wirth ALGOL X jarayonidan voz kechishga va ALGOL W-ni yanada takomillashtirishga qaror qildi va 1970 yilda Paskal deb e'lon qildi.

ALGOL ning ustiga skalar va massivlar, Paskalda murakkab ma'lumotlar turlarini aniqlash va shu kabi dinamik va rekursiv ma'lumotlar tuzilmalarini yaratish yoqilgan ro'yxatlar, daraxtlar va grafikalar. Paskalda bor kuchli yozuv barcha ob'ektlar bo'yicha, bu aniq bir konversiyasiz ma'lumotlarning bir turini konvertatsiya qilish yoki boshqasiga talqin qilish mumkin emasligini anglatadi. C (va tilidagi ko'p tillardan farqli o'laroq C-oila ), Paskal ruxsat beradi ichki protsedura ta'riflar har qanday chuqurlik darajasiga, shuningdek, ichidagi ta'riflar va deklaratsiyalarning ko'p turlariga imkon beradi subroutines (protseduralar va funktsiyalar). Shunday qilib dastur sintaktik jihatdan bitta protsedura yoki funktsiyaga o'xshaydi. Bu ALGOL 60 blok tuzilishiga o'xshaydi, lekin o'zboshimchalik bilan blok bayonotlaridan faqat protsedura va funktsiyalargacha cheklangan.

Paskal 1970-yillarda juda muvaffaqiyatli bo'ldi, ayniqsa rivojlanayotgan davrda minikompyuter bozor. Tuzuvchilar ko'pchilik uchun ham mavjud edi mikrokompyuterlar chunki bu soha 1970 yillarning oxirlarida paydo bo'lgan. Bu tilni o'qitish tili sifatida keng qo'llanilgan universitet - 1980-yillarda dasturlashning darajalari va shu davrda tijorat dasturlarini yozish uchun ishlab chiqarish sharoitida foydalanilgan. Tomonidan ko'chirildi C dasturlash tili 1980-yillarning oxiri va 1990-yillarning boshlarida UNIX -bazalangan tizimlar ommalashdi va ayniqsa chiqarilishi bilan C ++.

Sifatida tanilgan lotin Ob'ekt Paskal uchun mo'ljallangan ob'ektga yo'naltirilgan dasturlash 1985 yilda ishlab chiqilgan; bu tomonidan ishlatilgan Apple Computer va Borland 1980 yillarning oxirlarida va keyinchalik rivojlangan Delphi ustida Microsoft Windows platforma. Paskal tushunchalarining kengaytmalari tillarga olib keldi Modula-2 va Oberon.

Tarix

Oldingi harakatlar

Tarixining ko'p qismi kompyuter tili 1960 yillar davomida dizaynni kuzatish mumkin ALGOL 60 til. ALGOL 1950-yillarda algoritmlarni aniq ta'riflash imkoniyatiga ega bo'lish maqsadida ishlab chiqilgan. Uchun bir qator xususiyatlarni o'z ichiga olgan tizimli dasturlash hozirgi kungacha tillarda keng tarqalgan bo'lib qolmoqda.

Kirishidan ko'p o'tmay, 1962 yilda Virt Helmut Veber bilan dissertatsiya ustida ishlay boshladi Eyler dasturlash tili. Eyler ALGOL sintaksisiga va ko'plab kontseptsiyalarga asoslangan, ammo lotin emas. Uning asosiy maqsadi dinamik ro'yxatlar va turlarni qo'shish, unga o'xshash rollarda foydalanishga imkon berish edi Lisp. Til 1965 yilda nashr etilgan.

Bu vaqtga kelib, ALGOL-da bir qator muammolar aniqlandi, xususan standartlashtirilmaganligi mag'lubiyat tizim. Tilni saqlash vazifasi yuklangan guruh ALGOL X yaxshilanishlarni aniqlash jarayoni, taqdimotlarni chaqirish. Wirth va Toni Xare satrlarni qo'shish va sintaksisning bir qismini tozalash uchun konservativ o'zgartirishlar to'plamini taqdim etdi. Bular yangi ALGOL standarti sifatida foydalanishga yaroqsiz deb hisoblangan, shuning uchun Wirth til uchun kompilyator yozgan va u ALGOL V.

ALGOL X sa'y-harakatlari ancha murakkab tilni tanlashda davom etadi, ALGOL 68. Ushbu tilning murakkabligi yuqori mahsuldor kompilyatorlarni ishlab chiqarishda katta qiyinchiliklarga olib keldi va bu sohada keng qo'llanilmadi. Bu yangi tillar uchun ochilish qoldirdi.

Paskal

Paskalga ALGOL W sa'y-harakatlari ta'sir ko'rsatdi, aniq maqsadlar ham kompilyatorda ham, ish vaqtida ham samarali, yaxshi tuzilgan dasturlarni ishlab chiqishga imkon beradigan va talabalarni o'qitish uchun foydali bo'ladigan tilni yaratishdir. tizimli dasturlash.[4] Talabalar avlodi Paskal tilini bakalavriat kurslarida kirish tili sifatida ishlatgan.

Til uchun dastlabki muvaffaqiyatlardan biri bu kirish edi UCSD Paskal, odat bo'yicha ishlaydigan versiya operatsion tizim bu turli xil platformalarga ko'chirilishi mumkin. Asosiy platforma bu edi Apple II, bu erda keng foydalanishni ko'rgan. Bu Paskal tilini rivojlantirishda ishlatiladigan yuqori darajadagi asosiy tilga aylanishiga olib keldi Apple Lisa, va keyinchalik Macintosh. Asl qismning qismlari Macintosh operatsion tizimi qo'lda tarjima qilingan Motorola 68000 assambleya tili Paskal manbalaridan.[5]

The matn terish tizim TeX tomonidan Donald E. Knut yozilgan WEB, asl nusxasi savodli dasturlash asoslangan tizim DEK PDP-10 Paskal. Kabi muvaffaqiyatli savdo dasturlari Adobe Photoshop[6] yozilgan Macintosh dasturchisining ustaxonasi Paskal, shunga o'xshash dasturlar Jami qo'mondon, Skype[iqtibos kerak ] va Macromedia Captivate Delphi-da yozilgan (Ob'ekt Paskal ). Apollon kompyuteri 1980 yildan boshlanib, operatsion tizimlari uchun dasturlash tili sifatida Paskal tilidan foydalangan.

Paskal tilining variantlari, shuningdek, tadqiqot loyihalaridan tortib to boshqalarga qadar ishlatilgan Kompyuter o'yinlari va o'rnatilgan tizimlar. Keng qo'llaniladigan yangi Paskal kompilyatorlari mavjud.[7]

Ob'ekt Paskal

Liza ustida ishlash paytida, Larri Tesler qo'shish fikri bo'yicha Wirt bilan yozishmalar boshladi ob'ektga yo'naltirilgan tilga kengaytmalar. Bu dastlab olib keldi Klaskal, 1983 yilda paydo bo'lgan. Liza dasturi o'chib, uning o'rnini Mac egallagan va keyingi versiyasi sifatida tanilgan Ob'ekt Paskal yaratilgan. Bu 1985 yilda Macintosh-da MacApp dastur doirasi va 1990-yillarning boshlarida Apple-ning asosiy rivojlanish tiliga aylandi.

Object Pascal kengaytmalari qo'shildi Turbo Paskal 1989 yilda 5.5 versiyasi chiqarilishi bilan.[8] Bir necha yillar davomida Object Pascal Delphi uchun tizim Microsoft Windows, bu hali ham Windows dasturlarini ishlab chiqish uchun ishlatiladi va boshqa tizimlarga kodlarni o'zaro kompilyatsiya qilishi mumkin. Bepul Paskal ochiq manba, o'zaro faoliyat platforma alternativasi.

Amaliyotlar

Dastlabki Paskal kompilyatorlari

Birinchi Paskal kompilyator yilda yaratilgan Tsyurix uchun CDC 6000 seriyali asosiy kompyuter oila. Niklaus Virt uni amalga oshirish uchun birinchi urinish haqida xabar beradi FORTRAN 66 1969 yilda FORTRAN 66-ning murakkab ma'lumotlar tuzilishini ifoda eta olmasligi sababli muvaffaqiyatsiz tugadi. Ikkinchi urinish C-ga o'xshash tilda amalga oshirildi (Scallop by Max Engeli) va keyin qo'l bilan (R. Schild tomonidan) Paskalga yuklash uchun strelka tarjima qilindi.[9] U 1970 yil o'rtalarida ishga tushirildi. O'shandan beri ko'plab Paskal kompilyatorlari xuddi shunday o'z-o'zini hosting, ya'ni kompilyator o'zi Paskalda yozilgan va kompilyator odatda tilga yangi xususiyatlar qo'shilganda yoki kompilyator kerak bo'lganda o'zini qayta kompilyatsiya qilishga qodir. ko'chirilgan yangi muhitga. The GNU Paskal kompilyator - bu Sda yozilgan alohida istisno.

CDC Pascal kompilyatorining birinchi muvaffaqiyatli portini boshqa katta koeffitsientga Welsh va Quinn tomonidan yakunlandi. Qirolichaning Belfast universiteti (QUB) 1972 yilda. Maqsad bu edi ICL 1900 seriyali. Ushbu kompilyator, o'z navbatida, uchun Paskal kompilyatorining ota-onasi bo'lgan Axborot kompyuter tizimlari (ICS) Multum minikompyuter. Multum porti Paskalni tizim dasturlash tili sifatida ishlatish maqsadida - Findlay, Cupples, Cavouras va Devis tomonidan ishlab chiqilgan. Glazgo universiteti. 1973 yil yozida qurilgan Multum Paskal birinchi 16-bitli dastur bo'lishi mumkin deb o'ylashadi.

Welsh va boshqalar tomonidan butunlay yangi kompilyator tugallandi. 1977 yilda QUB-da. Glasgow Universitetida Findlay va Vatt tomonidan amalga oshirilgan manba tili diagnostikasi xususiyati (profil, kuzatuv va turga oid formatlangan postmortem axlatxonalarini o'z ichiga olgan) taklif qildi. Ushbu dastur 1980 yilda ko'chirildi ICL 2900 asoslangan jamoa tomonidan ketma-ket Sautgempton universiteti va Glazgo universiteti. Standart Paskal modelini amalga oshirish, shuningdek, Welsh va Hay at tomonidan moslashtirilgan ushbu kompilyatorga asoslangan edi Manchester universiteti 1984 yilda BSI 6192 / ISO 7185 standartiga muvofiqligini qat'iy tekshirish va ko'chma mavhum mashina uchun kod ishlab chiqarish.

Birinchi Paskal kompilyator Shimoliy Amerikada yozilgan Illinoys universiteti ostida Donald B. Gillies uchun PDP-11 va mahalliy mashina kodini yaratdi.

Paskal-P tizimi

Tilni tez targ'ib qilish uchun kompilyator ko'chirish to'plami deb nomlangan kompilyatorni o'z ichiga olgan Tsyurixda yaratilgan p-kod a virtual stack mashinasi, ya'ni o'zini oqilona samarali talqin qilishga imkon beradigan kod va ushbu kod uchun tarjimon bilan birga - the Paskal-P tizim. P-tizim kompilyatorlari Paskal-P1, Paskal-P2, Paskal-P3 va Paskal-P4 deb nomlangan. Paskal-P1 birinchi versiyasi, Paskal-P4 esa Tsyurixdan so'nggi chiqqan. Paskal-P1 deb nomlangan versiya Paskal-P uchun mavjud bo'lgan turli xil manbalar uchun paydo bo'lganidan keyin paydo bo'ldi. Portativlikni yaxshilash uchun kompilyator qayta ishlangan va Paskal-P2 sifatida chiqarilgan. Keyinchalik bu kod Paskal-P3 ga aylantirilib, oraliq kodga ega bo'ldi orqaga qarab mos keladi orqaga mos kelmaydigan Paskal-P2 va Paskal-P4 bilan.

Paskal-P4 kompilyatori-tarjimoni hanuzgacha original Paskal bilan mos keladigan tizimlarda ishlashi va kompilyatsiya qilinishi mumkin. Biroq, u faqat Paskal tilining pastki qismini qabul qiladi.

Tsyurix guruhidan tashqarida yaratilgan Paskal-P5 to'liq Paskal tilini qabul qiladi va ISO 7185 muvofiqligini o'z ichiga oladi.

UCSD Paskal Paskal-P2 dan tarvaqaylab ketgan, bu erda Kennet Boulz uni yaratish uchun foydalangan izohlovchi UCSD p-tizimi. Bu asl nusxaning ishga tushirilishida mavjud bo'lgan uchta operatsion tizimdan biri edi IBM Shaxsiy Kompyuter.[10] UCSD Paskal bayt qiymatlariga asoslangan oraliq kodni ishlatgan va shu tariqa eng qadimiylaridan biri bo'lgan bayt kod kompilyatorlari. Paskal-P1 orqali Paskal-P4 emas, balki CDC 6600 60 bitli so'z uzunligiga asoslangan edi.

Uchun mahalliy ikkilik fayllarni yaratgan Paskal-P4 kompilyatoriga asoslangan kompilyator chiqarildi IBM System / 370 asosiy kompyuter tomonidan Avstraliya atom energiyasi bo'yicha komissiyasi; unga nom berildi AAEC Paskal kompilyatori komissiya nomining qisqartmasidan keyin.[11]

Ob'ekt Paskal va Turbo Paskal

Apple Computer 1982 yilda Lisa Workshop uchun o'zining Lisa Paskalini yaratdi va kompilyatorni Apple Macintosh-ga ko'chirdi va MPW 1985 yilda. 1985 yilda Larri Tesler, Niklaus Virt bilan maslahatlashib, Object Pascal-ni aniqladi va bu kengaytmalar Liza Paskal va Mac Pascal kompilyatorlariga kiritildi.

1980-yillarda, Anders Xeylsberg uchun Blue Label Paskal kompilyatori yozgan Nascom -2. Uchun ushbu kompilyatorning reimplementatsiyasi IBM PC tomonidan sotib olinmasdan oldin Compas Pascal va PolyPascal nomlari bilan sotilgan Borland va qayta nomlandi Turbo Paskal.

Turbo Paskal tajovuzkor narxlash strategiyasi, birinchi to'liq ekranli IDE-lardan biriga ega bo'lganligi va juda tez aylanish muddati (kompilyatsiya qilish, bog'lash va ishga tushirish uchun bir necha soniya) tufayli juda mashhur bo'ldi. U butunlay yozilgan va juda optimallashtirilgan assambleya tili, buni qilish kichikroq va raqobatning ko'p qismidan tezroq.

1986 yilda Anders Turbo Paskalni Macintosh-ga ko'chirdi va Apple-ning Ob'ekt Paskal kengaytmalarini Turbo Paskalga qo'shdi. Keyinchalik ushbu kengaytmalar 5.5 versiyasi uchun Turbo Pascal-ning kompyuter versiyasiga qaytadan qo'shildi. Xuddi shu paytni o'zida Microsoft shuningdek, Object Pascal kompilyatorini amalga oshirdi.[12][13] Turbo Paskal 5.5 Paskal hamjamiyatiga katta ta'sir ko'rsatdi, ular 1980 yillarning oxirlarida asosan IBM PC-da to'plana boshladilar. Kompyuterning sevimli mashg'ulotchilari, BASIC-ning o'rnini bosuvchi izlashda ushbu mahsulotdan foydalanganlar. Shuningdek, u professional ishlab chiquvchilar tomonidan qabul qilinishni boshladi. Taxminan bir vaqtning o'zida bir qator tushunchalar import qilingan C Paskal dasturchilariga C asosidagi ma'lumotlardan foydalanishga ruxsat berish API ning Microsoft Windows to'g'ridan-to'g'ri. Ushbu kengaytmalar bekor qilingan torlar, ko'rsatkich arifmetikasi, funktsiya ko'rsatgichlari, operator manzili va xavfli yozuvlar.

Turbo Paskal va boshqa hosilalari birliklar yoki modul tushunchalari modulli tillar. Biroq, u ichki o'rnatilgan modul kontseptsiyasini yoki ma'lum belgilarning malakali importi va eksportini ta'minlamaydi.

Boshqa variantlar

Super Paskal raqamli bo'lmagan yorliqlar, qaytish bayonoti va iboralarni turlarning nomlari sifatida qo'shgan variant.

TMT Paskal birinchi bo'ldi Borland -32-bit uchun mos kompilyator DOS himoyalangan rejim, OS / 2 va Win32 operatsion tizimlar. TMT Paskal tili funktsiyalarga ruxsat beruvchi birinchi til edi operatorning ortiqcha yuklanishi.

Viskonsin-Medison universitetlari, Tsyurix, Karlsrue va Vuppertal ishlab chiqilgan Paskal-SC[14][15] va Paskal-XSC[16][17][18] (Ilmiy hisoblash uchun kengaytmalar ) raqamli hisoblashni dasturlashga qaratilgan kompilyatorlar. Paskal-SC uchun ishlab chiqarish 1978 yilda ISO 7185 Paskal-0 darajasini qo'llab-quvvatlashni boshlagan, ammo keyingi bosqichda 2-darajali qo'llab-quvvatlash qo'shilgan.[19] Dastlab Paskal-SC-ga yo'naltirilgan Z80 protsessor, lekin keyinchalik DOS uchun qayta yozilgan (x86 ) va 68000. Paskal-XSC turli vaqtlarda Unix (Linux, SunOS, HP-UX, AIX ) va Microsoft / IBM (DOS bilan EMX, OS / 2, Windows ) operatsion tizimlar. U oraliq C manba kodini yaratish orqali ishlaydi va keyinchalik mahalliy bajariladigan faylga kompilyatsiya qilinadi. Paskal-SC tilining ba'zi kengaytmalari tomonidan qabul qilingan GNU Paskal.

Paskal Sol 1983 yilda Frantsiya jamoasi tomonidan amalga oshirilgan Unixga o'xshash Sol nomli tizim. Bu standart Paskal darajasi-1 edi (parametrlangan qator chegaralari bilan), lekin ta'rifda frantsuz tilida muqobil kalit so'zlar va oldindan aniqlangan identifikatorlarga ruxsat berildi va til tizim dasturlarini engillashtirish uchun bir nechta kengaytmalarni o'z ichiga oldi (masalan, lseek-ga teng).[20] Keyinchalik "Sol" jamoasi ChorusOS tarqatilgan operatsion tizimni loyihalashtirish loyihasi.[21]

IP Paskal yordamida Paskal dasturlash tilini amalga oshirish edi Mikropolis DOS, lekin tezda ko'chirildi CP / M-80 Z80-da ishlaydigan. Ga ko'chirildi 80386 1994 yilda ishlab chiqarilgan mashina turlari va bugungi kunda Windows / XP va Linux dasturlari sifatida mavjud. 2008 yilda tizim yangi bosqichga ko'tarildi va natijada til "Paskalin" deb nomlandi (keyin Paskalning kalkulyatori ). Bunga ob'ektlar, nomlar maydonini boshqarish, dinamik massivlar, boshqa ko'plab kengaytmalar bilan bir qatorda va odatda xuddi shu funktsionallik va turdagi himoya xususiyatlariga ega C #. Bu ISO 7185 sifatida standartlashtirilgan Paskal dasturining asl nusxasiga mos keladigan yagona dastur.

Til konstruktsiyalari

Paskal, asl shaklida, faqat sofdir protsessual til va an'anaviy qatorni o'z ichiga oladi ALGOL kabi ajratilgan so'zlar bilan o'xshash boshqaruv tuzilmalari agar, keyin, boshqa, esa, uchunva ish bitta bayonotga yoki a boshlash-oxiri bayonotlar blokirovkasi. Paskalda asl nusxaga kiritilmagan ma'lumotlarni tuzish konstruktsiyalari ham mavjud ALGOL 60 turlari, kabi yozuvlar, variantlar, ko'rsatgichlar, sanab chiqish va to'plamlar va protsedura / ko'rsatgichlar. Bunday konstruktsiyalar qisman meros qilib olingan yoki ilhomlangan Simula 67, ALGOL 68, Niklaus Virt o'z ALGOL V va takliflar C. A. R. Hoare.

Paskal dasturlari. Bilan boshlanadi dastur kalit so'z tashqi ro'yxati bilan fayl tavsiflovchilari parametr sifatida[22] (Turbo Paskal va hokazolarda talab qilinmaydi); keyin asosiyga amal qiladi blokirovka qilish Qavslar boshlash va oxiri kalit so'zlar. Nuqta-vergul alohida bayonotlar, va nuqta (ya'ni, nuqta) butun dasturni tugatadi (yoki birlik). Maktub ishi Paskal manbasida e'tiborga olinmaydi.

Bu erda juda sodda foydalaniladigan manba kodining misoli "Salom Dunyo!" dastur:

dastur Salom Dunyo(chiqish);boshlash    Yozing('Salom Dunyo!')    {Yo'q ";" blokning so'nggi bayonotidan keyin talab qilinadi -        birini qo'shish dasturga "null bayonot" qo'shadi, bu esa kompilyator tomonidan e'tiborga olinmaydi.}oxiri.

Ma'lumot turlari

Paskaldagi va boshqa bir qancha mashhur dasturlash tillaridagi tur o'zgaruvchini shunday o'zgaruvchini saqlashi mumkin bo'lgan qiymatlar oralig'ini belgilaydigan tarzda belgilaydi, shuningdek bajarilishi mumkin bo'lgan operatsiyalar to'plamini belgilaydi. ushbu turdagi o'zgaruvchilar. Oldindan belgilangan turlari:

Ma'lumot turiO'zgaruvchi saqlashga qodir bo'lgan qiymatlar turi
tamsayıtamsayı (butun) raqamlar
haqiqiysuzuvchi nuqta raqamlari
mantiqiyTrue yoki False qiymatlari
chartartiblangan belgilar to'plamidan bitta belgi
mag'lubiyatbelgilar ketma-ketligi yoki "satr"
o'rnatilganqatoriga teng mantiqiy qiymatlar

Har biri uchun ruxsat berilgan qiymatlar diapazoni (mantiqiy tashqari) amalga oshirish uchun belgilangan. Ma'lumotlarni konvertatsiya qilish uchun funktsiyalar taqdim etiladi. Konvertatsiya qilish uchun haqiqiy ga tamsayı, quyidagi funktsiyalar mavjud: dumaloq (foydalanib, butun songa aylanadi bankirning yaxlitlashi ) va trunk (nolga to'g'ri keladi).

Dasturchi Paskalning turini deklaratsiya qilish vositasi yordamida, masalan, boshqa tez-tez ishlatiladigan ma'lumotlar turlarini (masalan, bayt, satr va boshqalarni) oldindan belgilangan turlar bo'yicha belgilash erkinligiga ega.

turi    bayt        = 0..255;    imzolangan_bayt = -128..127;    mag'lubiyat      = qadoqlangan qator[1..255] ning char;

(Bayt va mag'lubiyat kabi tez-tez ishlatiladigan turlar allaqachon ko'plab dasturlarda aniqlangan.)

Subrange turlari

Har qanday subranges tartibli ma'lumotlar turi (haqiqiydan tashqari har qanday oddiy turdagi):

var    x : 1..10;    y : "a".."z";

Turlarini o'rnating

O'z vaqtidan boshqa dasturlash tillaridan farqli o'laroq, Paskal o'rnatilgan turni qo'llab-quvvatlaydi:[23]

var    To'siq1 : o'rnatilgan ning 1..10;    O'rnatish2 : o'rnatilgan ning "a".."z";

To'plam zamonaviy matematikaning asosiy tushunchasidir va ular ko'plab algoritmlarda ishlatilishi mumkin. Bunday xususiyat foydalidir va to'plamlarni qo'llab-quvvatlamaydigan tilda ekvivalent tuzilishga qaraganda tezroq bo'lishi mumkin. Masalan, ko'plab Paskal kompilyatorlari uchun:

agar men yilda [5..10] keyin ...

quyidagilardan tezroq bajariladi:

agar (men > 4) va (men < 11) keyin ...

Bir-biriga yaqin bo'lmagan qiymatlar to'plamlari ishlash va o'qish jihatidan ayniqsa foydali bo'lishi mumkin:

agar men yilda [0..3, 7, 9, 12..15] keyin ...

Kichik domenlar ustidagi to'plamlarni o'z ichiga olgan ushbu misollar uchun yaxshilangan ishlashga, odatda, to'plam o'zgaruvchilarini bit vektorlari sifatida ifodalovchi kompilyator erishadi. To'plam operatorlar keyin bitwise mashina kodlari operatsiyalari sifatida samarali amalga oshirilishi mumkin.

Deklaratsiyalarni kiriting

Turlarning deklaratsiyalari yordamida boshqa turlardan aniqlanishi mumkin:

turi    x = tamsayı;    y = x;...

Bundan tashqari, murakkab turlarni oddiy turlardan qurish mumkin:

turi    a = qator[1..10] ning tamsayı;    b = yozuv        x : tamsayı;        y : char  {qo'shimcha vergul qo'yish shart emas}    oxiri;    v = fayl ning a;

Fayl turi

Yuqoridagi misolda ko'rsatilgandek, Paskal fayllar komponentlarning ketma-ketligi. Har bir fayl buferli o'zgaruvchiga ega, u bilan belgilanadi f ^. Jarayonlar olish (o'qish uchun) va qo'yish (yozish uchun) bufer o'zgaruvchisini keyingi elementga o'tkazing. O'qish shunday kiritilgan o'qing (f, x) bilan bir xil x: = f ^; olish (f);. Yozish shunday kiritilgan yozish (f, x) bilan bir xil f ^: = x; qo'yish (f); Matn turi char fayli sifatida oldindan belgilangan. Bufer o'zgaruvchisi ishlatilishi kerak bo'lgan keyingi belgini tekshirish uchun ishlatilishi mumkin bo'lsa (butun sonni o'qishdan oldin raqamni tekshiring), bu dastlabki dasturlarda interaktiv dasturlar bilan bog'liq jiddiy muammolarga olib keladi, ammo keyinchalik "dangasa I / U" bilan hal qilindi kontseptsiya.

Jensen & Wirth Pascal-da satrlar qadoqlangan qadoqlangan massiv sifatida ifodalanadi; shuning uchun ular belgilangan uzunlikka ega va odatda bo'shliq bilan to'ldirilgan.

Ko'rsatkich turlari

Paskal tilidan foydalanishni qo'llab-quvvatlaydi ko'rsatgichlar:

turi    pNode = ^Tugun;    Tugun  = yozuv        a : tamsayı;        b : char;        v : pNode      oxiri;var    NodePtr : pNode;    IntPtr  : ^tamsayı;

Bu erda o'zgaruvchan NodePtr ma'lumotlar turiga ko'rsatgichdir Tugun, yozuv. Ko'rsatkichlar e'lon qilinishidan oldin foydalanish mumkin. Bu oldinga deklaratsiya, narsalar ishlatilishidan oldin e'lon qilinishi kerakligi qoidasidan istisno.

Yangi yozuv yaratish va qiymatni tayinlash uchun 10 va xarakter A dalalarga a va b yozuvda va ko'rsatgichni boshlash uchun v uchun nol ko'rsatkich ("NIL" Paskalda), quyidagi so'zlar bo'ladi:

Yangi(NodePtr);...NodePtr^.a := 10;NodePtr^.b := "A";NodePtr^.v := NIL;...

Buni shuningdek yordamida amalga oshirish mumkin bilan bayonot, quyidagicha:

Yangi(NodePtr);...bilan NodePtr^ qilboshlash    a := 10;    b := "A";    v := NILoxiri;...

Doirasi ichida bilan bayonot, a va b yozuv ko'rsatkichining pastki maydonlariga ishora qiladi NodePtr va tugun yozuviga yoki pNode ko'rsatgich turiga emas.

Bog'langan ro'yxatlar, vayronalar va navbat yozuvga ko'rsatgich turi maydonini (c) kiritish orqali yaratilishi mumkin.

Ko'rsatkichlar mavjud bo'lgan ko'plab tillardan farqli o'laroq, Paskal ko'rsatgichlarga faqat dinamik ravishda yaratilgan noma'lum o'zgaruvchilarga murojaat qilish imkoniyatini beradi va ularga standart statik yoki mahalliy o'zgaruvchilarga murojaat qilish imkoniyatini bermaydi. Ko'rsatkichlar, shuningdek, bog'langan turga ega bo'lishi kerak va bir turga ko'rsatgich boshqa turga mos kelmaydi (masalan, char ko'rsatgichi butun songa mos kelmaydi). Bu boshqa ko'rsatgichlar, xususan foydalanilgan dasturlarga xos bo'lgan xavfsizlik muammolarini bartaraf etishga yordam beradi PL / I yoki C. Shuningdek, ba'zi xavflarni keltirib chiqaradi osilgan ko'rsatkichlar, lekin yordamida mos yozuvlar maydonini dinamik ravishda taqsimlash qobiliyati yo'q qilish funktsiyasi (bu xuddi shunday ta'sirga ega ozod kutubxona funktsiyasi topildi C ) ko'rsatkichlarni osib qo'yish xavfi to'liq bartaraf etilmaganligini anglatadi[24] Java va C # kabi tillarda bo'lgani kabi avtomatik axlat yig'ish (ammo ular bilan bog'liq muammoni to'liq bartaraf etmaydi xotira sızdırıyor ).

Ushbu cheklovlarning ba'zilari yangi lahjalarda bekor qilinishi mumkin.

Boshqarish tuzilmalari

Paskal - bu tizimli dasturlash til, ya'ni boshqaruv oqimi standart tarzda tuzilganligini anglatadi bayonotlar, odatda "bordi buyruqlar.

esa a <> b qil  Yozing("Kutish");agar a > b keyin Yozing("Shart bajarildi")   {boshqalarga nuqta-vergul qo'yilmaydi}    boshqa Yozing("Shart bajarilmadi");uchun men := 1 ga 10 qil  {keyingi bayonotni ajratib qo'yganday bu erda nuqta-vergul yo'q}    Yozing("Takrorlash:", men);takrorlang    a := a + 1qadar a = 10;ish men ning    0 : Yozing("nol");    1 : Yozing("bitta");    2 : Yozing("ikki");    3,4,5,6,7,8,9,10: Yozing('?')oxiri;

Protseduralar va funktsiyalar

Paskal dasturlarni protsedura va funktsiyalarga tuzadi.

dastur Bosib chiqarish;var men : tamsayı;protsedura Chop etish(j : tamsayı);boshlash    ...oxiri;boshlash {asosiy dastur}    ...    Chop etish(men);oxiri.

Protseduralar va funktsiyalar har qanday chuqurlikda joylashtirilishi mumkin va "dastur" tuzilishi mantiqiy tashqi blokdir.

Odatiy bo'lib, parametrlar qiymat bo'yicha o'tkaziladi. Agar 'var' parametr nomidan oldin bo'lsa, u mos yozuvlar orqali uzatiladi.

Har bir protsedura yoki funktsiya o'zlarining goto yorliqlari, doimiylari, turlari, o'zgaruvchilari va boshqa protsedura va funktsiyalarning deklaratsiyasiga ega bo'lishi mumkin, bularning barchasi shu tartibda bo'lishi kerak. bir martalik kompilyatsiya. Biroq, ba'zi lahjalarda (masalan Embarcadero Delphi ) deklaratsiya bo'limlarining qat'iy buyurtma talablari yumshatildi.

Nuqtali vergullar ajratuvchi sifatida

Paskal juda ko'p til sintaksis xususiyatlarini o'zlashtirdi ALGOL til, shu jumladan nuqta-verguldan so'zlarni ajratuvchi sifatida foydalanish. Bu kabi boshqa tillardan farqli o'laroq PL / I, C va hokazo. Dan oldin nuqta-vergul kerak emas oxiri yozuv turi, blokirovka yoki a uchun kalit so'z ish bayonot; oldin qadar takroriy iboraning kalit so'zi; va oldin boshqa ning kalit so'zi agar bayonot.

Paskalning dastlabki versiyalarida qo'shimcha vergulning bo'lishiga yo'l qo'yilmagan. Biroq, qo'shilishi ALGOL - 1973 yildagi bo'sh bayonotlar singari Hisobot qayta ko'rib chiqildi va keyinchalik ISO 7185: 1983 da tilga kiritilgan o'zgartirishlar, bu holatlarning aksariyatida ixtiyoriy nuqta-vergul qo'yishga imkon beradi. Dan oldin darhol vertikalga ruxsat berilmaydi boshqa an-dagi kalit so'z agar bayonoti, chunki boshqa bayonotlar ketma-ketligiga emas, balki bitta gapga amal qiladi. Ichki iflar holatida, nuqta-verguldan qochish uchun foydalanib bo'lmaydi osilgan muammo (bu erda ichki bo'lsa, unda boshqasi yo'q, lekin tashqi bo'lsa, u holda) agar nuqta-vergul bilan joylashtirilgan bo'lsa, demak, bu ikkala band ham tugatiladi. Buning o'rniga, aniq boshlash ... tugatish blokdan foydalanish kerak.[25]

Resurslar

Tuzuvchilar va tarjimonlar

Umumiy foydalanish uchun bir nechta Paskal kompilyatorlari va tarjimonlari mavjud:

  • Delphi bu Embarcadero (sobiq Borland / CodeGear) flagmani tezkor dasturni ishlab chiqish (RAD) mahsulot. Ilovalar yaratish uchun u Paskaldan kelib chiqqan Object Pascal tilidan (Borland tomonidan "Delphi" deb nomlanadi) foydalanadi. Windows, macOS, iOS va Android. D8 dan D2005, D2006 va D2007 gacha bo'lgan .NET-ni qo'llab-quvvatlash to'xtatildi va uning o'rniga orqaga to'liq mos kelmaydigan yangi til (Oksijen rebrendi qilingan prizma, quyida ko'rib chiqing) almashtirildi. Yaqin o'tkan yillarda Unicode qo'llab-quvvatlash va umumiy narsalar qo'shildi (D2009, D2010, Delphi XE).
  • Bepul Paskal da yozilgan ko'p platformali kompilyator Ob'ekt Paskal (va shunday o'z-o'zini hosting ). Bu eski dasturlarni kompilyatsiya qilishga qodir bo'lgan va yangilarini yaratish vositasi bo'lgan qulay va kuchli kompilyatorni taqdim etishga qaratilgan. U ostida tarqatiladi GNU GPL, paketlar va ish vaqti kutubxonasi o'zgartirilgan GNU LGPL. Uchun moslik rejimlaridan tashqari Turbo Paskal, Delphi va Mac Pascal, shuningdek, o'zining protsessual va ob'ektga yo'naltirilgan sintaksis rejimlariga ega, masalan, kengaytirilgan funktsiyalarni qo'llab-quvvatlaydi. operator ortiqcha yuk. Bu ko'plab platformalar va operatsion tizimlarni qo'llab-quvvatlaydi. Joriy versiyalarda ISO rejimi ham mavjud.
  • Zamonaviy Paskal ichida yozilgan ko'p platformali tarjimon va p-kod kompilyatori Bepul Paskal. PHP va node.js uchun muqobil echimlarni taqdim etishga qaratilgan, bu ISO standartidagi paskal dialektidan yoki JavaScript / C operatorlarini qo'llab-quvvatlovchi gibriddan foydalanadi. CLI-dan u Free Pascal tarjimoni sifatida foydalidir.
  • Turbo51 uchun Paskalning bepul kompilyatori 8051 oila mikrokontrollerlar bilan Turbo Paskal 7 sintaksis.
  • Kislorod (ilgari nomi bilan tanilgan Chrome) uchun Object Pascal kompilyatori .NET va Mono platformalar. U RemObjects Software tomonidan yaratilgan va sotilgan va Embarcadero tomonidan orqa kompilyator sifatida bir muncha vaqt sotilgan. Prizma.
  • Kylix ning avlodi edi Delphi, uchun qo'llab-quvvatlash bilan Linux operatsion tizim va takomillashtirilgan ob'ektlar kutubxonasi. U endi qo'llab-quvvatlanmaydi. Tijorat maqsadlarida foydalanish uchun kompilyator va IDE hozirda mavjud.
  • GNU Paskal Kompilyator (GPC) - ning Paskal kompilyatori GNU kompilyatori to'plami (GCC). Kompilyatorning o'zi C, ish vaqti kutubxonasi asosan Paskal tilida yozilgan. Ostida tarqatildi GNU umumiy jamoat litsenziyasi, u ko'plab platformalarda va operatsion tizimlarda ishlaydi. U ANSI / ISO standart tillarini qo'llab-quvvatlaydi va Turbo Paskal dialektini qisman qo'llab-quvvatlaydi. Eng alamli kamchiliklardan biri bu 100% Turbo Paskalga mos keladigan (qisqa) mag'lubiyat turining yo'qligi. Borland Delphi va boshqa tillardagi o'zgarishlarni qo'llab-quvvatlash juda cheklangan. Ammo Mac-pascal-ni qo'llab-quvvatlash bor.
  • Virtual Paskal Vitaliy Miryanov tomonidan 1995 yilda Borland Paskal sintaksisiga mos keladigan mahalliy OS / 2 kompilyatori sifatida yaratilgan. Keyinchalik, Win32-ni qo'llab-quvvatlaydigan fPrint tomonidan tijorat tomonidan ishlab chiqilgan va 2000 yilda bepul dasturga aylangan. Bugungi kunda u Win32, OS / 2 va Linux uchun kompilyatsiya qilishi mumkin va asosan Borland Pascal va Delphi bilan mos keladi. Loyihalash 2005 yil 4 aprelda bekor qilingan.
  • P4 kompilyatori, ko'plab keyingi Paskalda amalga oshirilgan Paskal kompilyatorlari uchun asos. U to'liq Paskal tilining kichik qismini amalga oshiradi.
  • P5 kompilyatori - P4 ning ISO 7185 (to'liq Paskal) moslashtirilishi.
  • Smart Mobile Studio - bu Paskal tilidan HTML5 / Javascript kompilyatori
  • Turbo Paskal 1980-yillarda va 1990-yillarning boshlarida shaxsiy kompyuterlar uchun ustun bo'lgan Paskal kompilyatori bo'lib, kuchli kengaytmalari va juda qisqa kompilyatsiya vaqtlari tufayli mashhur bo'lgan. Turbo Paskal ixcham tarzda yozilgan va diskka kirmasdan hammasini kompilyatsiya qilish, ishga tushirish va disk raskadrovka qilish imkoniyatiga ega edi. Sekin floppi disklar o'sha paytda dasturchilar uchun odatiy bo'lib, Turbo Paskal tezligining ustunligini yanada oshirdi. Hozirda Turbo Pascal-ning eski versiyalari (5,5 gacha) Borland saytidan bepul yuklab olinadi.
  • IP Paskal "Paskalin" (nomi bilan nomlangan) tilini amalga oshiradi Paskalning kalkulyatori ), bu ISO 7185 bo'yicha original Paskal bilan mos keladigan juda kengaytirilgan Paskaldir. Unda nomlar maydonini boshqaruvchi modullar, shu jumladan semaforalar bilan parallel vazifa modullari, ob'ektlar, ish vaqtida ajratilgan har qanday o'lchamdagi dinamik massivlar, ortiqcha yuklamalar, bekor qilishlar va boshqalar. boshqa kengaytmalar. IP Paskalda Paskal tiliga moslashtirilgan o'rnatilgan portativ kutubxonasi mavjud. Masalan, 1970 yildagi asl Paskal tilidan matn chiqaradigan standart dastur derazada ishlash uchun qayta kompilyatsiya qilinishi va hattoki grafik konstruktsiyalar qo'shilishi mumkin.
  • Paskal-XT tomonidan yaratilgan Simens ular uchun asosiy ramka operatsion tizimlar BS2000 va SINIX.
  • PocketStudio uchun Paskal sub-kompilyatori va RAD vositasi Palm OS va Palm OS API bilan aloqada bo'lishga yordam beradigan ba'zi bir o'z kengaytmalariga ega MC68xxx protsessorlari. Vizual forma dizaynerlari, ob'ektlar inspektori va a. Bilan Delphi va Lazarusga o'xshaydi manba kodi muharriri.
  • MIDletPascal - mobil telefonlar uchun dasturiy ta'minot yaratish uchun maxsus ishlab chiqilgan kichik va tezkor Java bayt kodini yaratadigan Paskal kompilyatori va IDE.
  • Vektor Paskal - bu til SIMD MMX va AMD 3d Now kabi ko'rsatmalar, barcha Intel va AMD protsessorlarini qo'llab-quvvatlaydi va Sony PlayStation 2 Emotion Engine.
  • Morfik Pascal ob'ekti Paskalda to'liq yozilgan veb-dasturlarni ishlab chiqishga imkon beradi (ham server, ham brauzer tomonida).
  • WDSibyl - Visual rivojlantirish muhiti va Win32 va OS / 2 uchun Paskal kompilyatori
  • PP Compiler, to'g'ridan-to'g'ri qo'lda ishlaydigan kompyuterda ishlaydigan Palm OS kompilyatori.
  • CDC 6000 Pascal kompilyatori birinchi (CDC 6000) Paskal kompilyatorining manba kodidir.
  • Paskal-S[26]
  • AmigaPascal - bu Amiga kompyuterining bepul Paskal kompilyatori.
  • VSI Paskal (dastlab VAX Pascal) - uchun ISO standart Paskalga mos kompilyator OpenVMS operatsion tizim.
  • Stony Brook Pascal + Turbo Pascal-ning to'g'ridan-to'g'ri o'rnini bosuvchi sifatida sotilgan, lekin kamida ikki baravar tezlikni bajaradigan kod ishlab chiqaruvchi DOS va OS / 2 uchun optimallashtiruvchi 16 bitli (keyinchalik 32 bitli) kompilyator edi.

IDElar

Kutubxonalar

  • Free Pascal Compiler bilan GUI dasturlarini yaratish uchun WOL kutubxonasi.

Standartlar

ISO / IEC 7185: 1990 Paskal

1983 yilda til IEC / ISO 7185 xalqaro standartida standartlashtirildi,[27] va mahalliy ANSI / IEEE770X3.97-1983 va ISO 7185: 1983 kabi bir qator mahalliy mamlakatlarning standartlari. Ushbu ikkita standart faqat shu bilan ajralib turardi: ISO standarti mos keladigan massivlar uchun "1-darajali" kengaytmani o'z ichiga olgan (massiv chegaralari ishlash vaqtigacha ma'lum bo'lmagan qator), bu erda ANSI ushbu kengaytmani asl nusxasiga (Wirth) versiya) til. 1989 yilda ISO 7185 qayta ko'rib chiqildi (ISO 7185: 1990) asl hujjatdagi turli xil xatolar va noaniqliklarni tuzatish uchun.

ISO 7185 standarti Wirthning 1974 yildagi tili uchun foydalanuvchi qo'llanmasi va hisobotida [Jensen va Virt] batafsil bayon qilinganligi bilan izohlangan, ammo standartga 1 daraja sifatida "mos keluvchi massiv parametrlari" ni qo'shganligi bilan ajralib turar edi, 0 darajasi Paskal tilida. mos keladigan massivlarsiz. Ushbu ilova iltimosiga binoan amalga oshirildi C. A. R. Hoare va Niklaus Virtning ma'qullashi bilan. Buning sababi, Hoare ning Paskal tilidagi versiyasini yaratmoqchi edi (NAG) Raqamli algoritmlar kutubxonasi, dastlab FORTRAN-da yozilgan va turli o'lchamdagi massiv parametrlariga imkon beradigan kengaytmasiz buni amalga oshirish mumkin emasligini aniqladi. Shu kabi mulohazalar protsessual va funktsional parametrlarning parametr turlarini belgilash uchun ob'ektning ISO 7185-ga kiritilishiga turtki berdi.

Niklaus Virtning o'zi 1974 yildagi tilni "standart" deb atagan, masalan, uni mashinaning o'ziga xos xususiyatlaridan farqlash uchun CDC 6000 kompilyator. Ushbu til hujjatlashtirilgan Paskal hisoboti,[28] "Paskal foydalanuvchilari uchun qo'llanma va hisobot" ning ikkinchi qismi.

Paskal katta mashinalarda (meynfreym va mini kompyuterlar) paydo bo'lgan, odatda standartlarga rioya qilingan. Ustida IBM PC, ular yo'q edi. IBM kompyuterlarida Borland Turbo Pascal va Delphi standartlari eng ko'p foydalanuvchilarga ega. Shunday qilib, ma'lum bir dastur asl Paskal tiliga mos keladimi yoki uning Borland shevasiga to'g'ri keladimi-yo'qligini tushunish odatda muhimdir.

Tilning IBM PC versiyalari UCSD Paskal paydo bo'lishi bilan farqlana boshladi, bu tilda bir nechta kengaytmalarni va bir nechta kamchiliklarni va o'zgarishlarni o'z ichiga olgan talqin qilingan dastur. UCSD tilining ko'plab xususiyatlari bugungi kunda, shu jumladan Borland shevasida saqlanib qolgan.

ISO / IEC 10206: 1990 kengaytirilgan Paskal

1990 yilda ISO / IEC 10206 sifatida kengaytirilgan Paskal standarti yaratildi,[29] bu texnik tarkibida bir xil[30] IEEE / ANSI 770X3.160-1989 raqamiga[31]2019 yildan boshlab, kengaytirilgan Paskalni qo'llab-quvvatlash FreePascal Tuzuvchi rejalashtirilgan.[32]

O'zgarishlar

Paskalning Niklaus Virtning Tsyurix versiyasi tashqarida chiqarilgan ETH ikkita asosiy shaklda, CDC 6000 kompilyator manbai va Paskal-P tizimi deb nomlangan ko'chirish to'plami. Paskal-P kompilyatori kompilyatorni yuklash uchun talab qilinmaydigan to'liq tilning bir nechta xususiyatlarini qoldirdi. Masalan, parametr sifatida ishlatiladigan protsedura va funktsiyalar, diskriminatsiyalangan variant yozuvlari, qadoqlash, yo'q qilish, protseduralararo gotos va to'liq kompilyatorning boshqa xususiyatlari chiqarib tashlangan.

UCSD Paskal, professor ostida Kennet Boulz, Paskal-P2 to'plamiga asoslangan va natijada Paskal-P tilidagi bir qator cheklovlarni birgalikda ishlatgan. UCSD Pascal keyinchalik Apple Pascal sifatida qabul qilindi va u erda bir nechta versiyalar orqali davom etdi. UCSD Paskal aslida Paskalning standart konstruktsiyalarini qo'shib Paskal-P to'plamidagi Paskal pastki qismini kengaytirgan bo'lsa ham, Paskalning to'liq standart o'rnatilishi emas edi.

1990-yillarning boshlarida, Alan Berns va Geoff Devies Paskal-FC ishlab chiqilgan, Pl / 0 ga kengaytirilgan (Niklausning "Algoritmlar + Ma'lumotlar tuzilmalari = Dasturlar" kitobidan). Paskal-FC-ni bir vaqtda dasturlash uchun o'qitish vositasi sifatida ishlatish uchun bir nechta konstruktsiyalar qo'shildi (masalan, semaforalar, monitorlar, kanallar, masofadan chaqiruv va manbalar). Parallellikni namoyish qilish uchun kompilyator chiqishi (bir xil P-kod ) keyin virtual mashinada bajarilishi mumkin. Ushbu virtual mashina nafaqat oddiy - adolatli muhitni, balki o'ta og'ir sharoitlarni ham (adolatsiz rejim) taqlid qilishi mumkin.

Borlandga o'xshash Paskal kompilyatorlari

Borland "s Turbo Paskal, tomonidan yozilgan Anders Xeylsberg, UCSD yoki Tsyurix kompilyatorlaridan mustaqil ravishda assambleya tilida yozilgan. Biroq, UCSD kompilyatori bilan bir xil kichik to'plam va kengaytmalarni qabul qildi. Buning sababi shundaki, UCSD tizimi o'sha paytda mavjud bo'lgan resurslar bilan cheklangan mikroprotsessor tizimlarida dasturlarni ishlab chiqish uchun mos bo'lgan eng keng tarqalgan Paskal tizimi bo'lgan.

The kichraytirilgan Turbo Pascal versiyasi 3 va undan keyingi mujassamlashuvlar, shu jumladan Borland Ob'ekt Paskal va Delphi va "Borland" ga mos kelmaydigan dasturlar dasturiy ta'minotchilar, shu jumladan shareware mualliflari orasida mashhur bo'lib ketdi va shuning uchun Paskal kodining SWAG kutubxonasida Delphi kabi versiyalar bilan yozilgan juda ko'p kod mavjud.

Dasturiy mahsulotlar (kompilyatorlar va IDE /Tezkor dastur ishlab chiqish (RAD) ushbu toifadagi:

  • Turbo Paskal - 7-versiyaga qadar "TURBO.EXE" va Windows uchun Turbo Paskal ("TPW") va Macintosh uchun Turbo Paskal.
  • Borland Paskal 7 (asosan Windows uchun Turbo Pascal 7).
  • Ob'ekt Paskal - da ishlab chiqilgan Paskal tilining kengaytmasi Apple Computer boshchiligidagi jamoa tomonidan Larri Tesler bilan maslahatlashgan holda Niklaus Virt, Paskalning ixtirochisi; uning xususiyatlari Borlandnikiga qo'shildi Macintosh uchun Turbo Paskal va 1989 yilda DOS uchun Turbo Pascal 5.5 uchun.
  • Delphi - Object Pascal asosan uning asosidagi tildir.
  • Bepul Paskal kompilyator (FPC) - Free Pascal kompaniyasi Paskal dasturchilari Borland Pascal va keyinchalik Delphi-ning amaldagi standart shevasini qabul qildi. Freepascal shuningdek, har ikkala ISO standartini qo'llab-quvvatlaydi.
  • PascalABC.NET - bu yangi avlod Paskal dasturlash tili, shu jumladan kompilyator va IDE
  • Borland Kylix ilgari Borland tomonidan sotilgan, ammo keyinchalik to'xtatilgan kompilyator va IDE. Bu Linux versiyasi Borland Delphi dasturiy ta'minotni ishlab chiqish muhiti va C ++ Builder.
  • Lazar - funktsiyasi jihatidan Kylix-ga o'xshash, bu Free dialascallarini qo'llab-quvvatlaydigan Free Pascal kompilyatori yordamida RAD uchun bepul o'zaro faoliyat platformali ingl. Ob'ekt Paskal, turli darajalarda.
  • Virtual Paskal - VP2 / 1 - bu OS / 2 va Win 32 ("yo'lda" Linux versiyasi bilan) uchun to'liq Borland Pascal va Borland Delphi mos 32-bitli Paskal kompilyatori.[33]
  • Sybil - Delphi-ga o'xshash ochiq kodli IDE va ​​kompilyator; dasturlarga WDSibyl kiradi[34] uchun Microsoft Windows va OS / 2, a commercial Borland Pascal compatible environment released by a company called Speedsoft that was later developed into a Delphi like RAD environment called Sybil and then open sourced under the GPL when that company closed down; Open Sybil is an ongoing project, an Ochiq manba Pascal RAD (Rapid Application Development) Tool for OS/2 and eCS that was originally based on Speedsoft's WDsybl SPCC (Sibyl Portable Component Classes) and SVDE (Sibyl Visual Development Tool) sources but now the core is SOM, WPS and OpenDoc.[35]

List of related standards

  • ISO 8651-2:1988 Information processing systems – Computer graphics – Graphical Kernel System (GKS) language bindings – Part 2: Pascal

Qabul qilish

Pascal generated a wide variety of responses in the computing community, both critical and complimentary.

Dastlabki tanqid

While very popular in the 1980s and early 1990s, implementations of Pascal that closely followed Wirth's initial definition of the language were widely criticized as being unsuitable for use outside teaching. Brayan Kernighan, who popularized the C tili, outlined his most notable criticisms of Pascal as early as 1981 in his article "Why Pascal is Not My Favorite Programming Language".[36] The most serious problem described by him was that array sizes and string lengths were part of the type, so it was not possible to write a function that would accept variable-length arrays or even strings as parameters. This made it unfeasible to write, for example, a sorting library. Kernighan also criticized the unpredictable order of evaluation of boolean expressions, poor library support, and lack of statik o'zgaruvchilar, and raised a number of smaller issues. Also, he stated that the language did not provide any simple constructs to "escape" (knowingly and forcibly ignore) restrictions and limitations. More general complaints from other sources[24][37] noted that the scope of declarations was not clearly defined in the original language definition, which sometimes had serious consequences when using oldinga deklaratsiyalar to define pointer types, or when record declarations led to o'zaro rekursiya, or when an identifier may or may not have been used in an enumeration list. Another difficulty was that, like ALGOL 60, the language did not allow procedures or functions passed as parameters to predefine the expected type of their parameters.

Despite initial criticisms, Pascal continued to evolve, and most of Kernighan's points do not apply to versions of the language which were enhanced to be suitable for commercial product development, such as Borland's Turbo Paskal. As Kernighan predicted in his article, most of the extensions to fix these issues were incompatible from compiler to compiler. Since the early 1990s, however, most of the varieties seem condensed into two categories: ISO and Borland-like. Extended Pascal addresses many of these early criticisms. It supports variable-length strings, variable initialization, separate compilation, short-circuit boolean operators, and default (aks holda) clauses for case statements.[38]

Shuningdek qarang

Adabiyotlar

  1. ^ "We looked very carefully at Delphi Ob'ekt Paskal and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs ... Our conclusion was that bound method references are unnecessary and detrimental to the language. This decision was made in consultation with Borland International, who had previous experience with bound method references in Delphi Ob'ekt Paskal "(dan.) About Microsoft's "Delegates" Arxivlandi 2012-06-27 at the Orqaga qaytish mashinasi at java.sun.com.
  2. ^ TechMetrix Research (1999). "Java tarixi" (PDF). Java dastur serverlari haqida hisobot. Arxivlandi asl nusxasi (PDF) 2010-12-29 kunlari. The project went ahead under the name "green" and the language was based on an old model of UCSD Paskal, which makes it possible to generate interpretive code
  3. ^ "A Conversation with James Gosling - ACM Queue". Arxivlandi asl nusxasidan 2015 yil 16 iyulda. Olingan 11 avgust 2015.
  4. ^ Essential Pascal Arxivlandi 2017-04-18 at the Orqaga qaytish mashinasi by Marco Cantù
  5. ^ Hertzfeld, Andy. "Hungarian folklore.org Arxivlandi 2015-11-18 at the Orqaga qaytish mashinasi: Macintosh Stories. Qabul qilingan 2012-03-06.
  6. ^ https://www.computerhistory.org/atchm/adobe-photoshop-source-code/ Arxivlandi 2014-05-07 da Orqaga qaytish mashinasi, Adobe Photoshop Source Code
  7. ^ tiobe.com Arxivlandi 2012-03-15 da Orqaga qaytish mashinasi, Programming Community Index for January 2011.
  8. ^ "Antique Software: Turbo Pascal v5.5".
  9. ^ Computers and Computing. A Personal Perspective. Arxivlandi 2017-05-10 da Orqaga qaytish mashinasi by Niklaus Wirth
  10. ^ cbi.umn.edu, "An Interview with John Brackett and Doug Ross"[doimiy o'lik havola ], p15, Charles Babbage Institute, 2004
  11. ^ Australian Atomic Energy Commission Research Establishment, Lucas Heights, Nuclear Science and Technology Branch Report, Divisional Research (PDF). International Atomic Energy Agency (IEAE) (Hisobot). 1977. p. 22.
  12. ^ Jon Udell, Crash of the Object-Oriented Pascals, BYTE, July, 1989.
  13. ^ M. I. Trofimov, The End of Pascal?, BYTE, March, 1990, p. 36.
  14. ^ Rall, L. B. (1987). "An introduction to the scientific computing language Pascal-SC". Kompyuterlar. 14: 53–69. doi:10.1016/0898-1221(87)90181-7.
  15. ^ PI (1986-08-29). "Cadmus jetzt mit Kulisch-Arithmetik - Uni Karlsruhe gibt Pascal-Compiler nach München" [Cadmus now comes with Kulisch arithmetic - University Karlsruhe delivers Pascal compiler to Munich]. Computerwoche (nemis tilida). Munich / Karlsruhe, Germany: IDG Business Media GmbH. Arxivlandi asl nusxasi 2016-05-30 da. Olingan 2016-05-30.
  16. ^ "PASCAL-XSC: PASCAL for Extended Scientific Computing". Arxivlandi asl nusxasi 2014-01-05 da.
  17. ^ "XSC Software". Arxivlandi asl nusxasi 2015 yil 1-noyabrda. Olingan 11 avgust 2015.
  18. ^ "Universitaet Wuppertal: Wissenschaftliches Rechnen / Softwaretechnologie". Arxivlandi asl nusxasi 2015 yil 6-noyabrda. Olingan 11 avgust 2015.
  19. ^ Bamberger, Lothar; Davenport, Jeyms X.; Fischer, Hans-Christoph; Kok, Jan; Schumacher, Günter; Ullrich, Christian; Wallis, Peter J. L.; Winter, Dik T.; Wolff von Gudenberg, Jürgen (1990). Wallis, Peter J. L. (ed.). Improving Floating-Point Programming (1-nashr). Bath, United Kingdom: John Wiley & Sons Ltd. ISBN  0-471-92437-7.
  20. ^ Michel Gien, "The SOL Operating System", in Usenix Summer '83 Conference, Toronto, ON, (July 1983), pp. 75-78
  21. ^ cs.berkeley.edu Arxivlandi 2015-02-07 at the Orqaga qaytish mashinasi
  22. ^ Pascal ISO 7185:1990 Arxivlandi 2012-06-17 da Orqaga qaytish mashinasi 6.10
  23. ^ Mandell, Steven L. (1987). Pascal Programming Today. G'arbiy nashriyot kompaniyasi. ISBN  978-0-314-33935-5.
  24. ^ a b J. Welsh, W. J. Sneeringer, and C. A. R. Hoare, "Ambiguities and Insecurities in Pascal", Software Practice and Experience 7, pp. 685–696 (1977)
  25. ^ Paskal, Nell Dale and Chip Weems, "Dangling Else", p. 160–161 Arxivlandi 2017-03-18 da Orqaga qaytish mashinasi
  26. ^ "Pascal-S: A Subset and Its Implementation", N. Wirth in Pascal – The Language and Its Implementation, by D.W. Barron, Wiley 1979.
  27. ^ ISO/IEC 7185:1990 Pascal (PDF). Arxivlandi asl nusxasi (PDF) 2016 yil 27 yanvarda. Olingan 16 sentyabr 2014.
  28. ^ Wirth, Niklaus (July 1973). The Programming Language Pascal (Revised Report). ETH Zürich. doi:10.3929/ethz-a-000814158.
  29. ^ Extended Pascal: ISO/IEC 10206:1990. Arxivlandi asl nusxasi 2016-03-27 da. Olingan 16 sentyabr 2014.
  30. ^ "Language standards: Pascal, Extended Pascal, Fortan". Arxivlandi asl nusxasi 2014-07-14. Olingan 16 sentyabr 2014.
  31. ^ 770X3.160-1989 - IEEE/ANSI Standard for the Programming Language Extended Pascal. 1990. doi:10.1109/IEEESTD.1990.101061. ISBN  978-0-7381-4247-0.
  32. ^ http://wiki.freepascal.org/Extended_Pascal
  33. ^ "Virtual Pascal for OS/2". Arxivlandi asl nusxasi 2011 yil 30 avgustda. Olingan 3 aprel 2016.
  34. ^ WDSibyl. "Homepage :: WDSibyl :: Visual Development Environment". www.wdsibyl.org. Arxivlandi asl nusxasi 2020-02-12. Olingan 2020-04-20.
  35. ^ "netlabs.org - Project: Open Sibyl". Arxivlandi asl nusxasi 2016 yil 4 martda. Olingan 3 aprel 2016.
  36. ^ Brian W. Kernighan (1981). "Nima uchun Paskal mening sevimli dasturlash tilim emas". Arxivlandi 2009-04-28 da Orqaga qaytish mashinasi
  37. ^ O. Lecarme, P. Desjardins, "More Comments on the Programming Language Pascal", Acta Informatica 4, pp. 231–243 (1975).
  38. ^ "Extended Pascal". Arxivlandi 2015-10-18 da Orqaga qaytish mashinasi.

Qo'shimcha o'qish

  • Niklaus Virt: The Programming Language Pascal. 35–63, Acta Informatica, Volume 1, 1971.
  • C. A. R. Hoare: "Notes on data structuring". In O.-J. Dahl, E. W. Dijkstra and C. A. R. Hoare, editors, Strukturaviy dasturlash, pages 83–174. Academic Press, 1972.
  • C. A. R. Hoare, Niklaus Wirth: An Axiomatic Definition of the Programming Language Pascal. 335–355, Acta Informatica, Volume 2, 1973.
  • Kathleen Jensen and Niklaus Wirth: PASCAL – User Manual and Report. Springer-Verlag, 1974, 1985, 1991, ISBN  0-387-97649-3 va ISBN  3-540-97649-3.
  • Niklaus Virt: Algoritmlar + Ma'lumotlar tuzilmalari = Dasturlar. Prentice-Hall, 1975, ISBN  0-13-022418-9.
  • Niklaus Virt: An assessment of the programming language PASCAL. 23–30 ACM SIGPLAN Notices Volume 10, Issue 6, June 1975.
  • N. Wirth, and A. I. Wasserman, ed: Programming Language Design. IEEE Computer Society Press, 1980
  • D. W. Barron (Ed.): Pascal – The Language and its Implementation. John Wiley 1981, ISBN  0-471-27835-1
  • Peter Grogono: Programming in Pascal, Revised Edition, Addison-Wesley, 1980
  • Richard S. Forsyth: Pascal in Work and Play, Chapman and Hall, 1982
  • N. Wirth, M. Broy, ed, and E. Denert, ed: Paskal va uning davomchilari yilda Software Pioneers: Contributions to Software Engineering. Springer-Verlag, 2002, ISBN  3-540-43081-4
  • N. Wirth: Recollections about the Development of Pascal. ACM SIGPLAN Notices, Volume 28, No 3, March 1993.