Fitur apa yang berkontribusi pada evolusi Pascal?

17

Saya menyusun sejarah terperinci bahasa Pascal, dan ada beberapa detail yang saya lewatkan.

Ada begitu banyak fitur hari ini yang kami anggap remeh. Fitur apa yang secara signifikan berkontribusi pada evolusi Pascal, dan mengapa itu signifikan?

Saya mencari fitur bahasa, bukan fitur platform atau kerangka kerja. Jadi seperti operator kelebihan atau parameter default, tetapi tidak mendukung Linux atau widget Rich Text baru.

Saya tahu ada beberapa rasa berbeda dari Pascal (Delphi, Free Pascal, Oxygene, Quick Pascal, Apple Pascal, dll.) Dan mereka memperkenalkan fitur yang sama pada waktu dan paralel yang berbeda. Itu tidak apa-apa. Saya melihat bahasa Pascal secara keseluruhan, dan ketika tonggak penting terjadi (tanggal, versi, dll.)

Jim McKeeth
sumber
@ Jim Pertanyaan Anda meminta daftar tanggal, tetapi tidak meminta masukan tentang mengapa seseorang akan menganggapnya penting. Saya telah menyusun ulang pertanyaan Anda untuk menangkap aspek itu, dan telah membukanya kembali.
2
Anda sadar bahwa produk Turbo Pascal merevolusi dunia Pascal? Dan dunia PC IBM juga, sebenarnya? Terutama karena itu memperbaiki string.
4
Jangan lupa UCSD Pascal! Itu diperkenalkan bytecodes (p-codes), jauh sebelum Jawa adalah binar di mata Sun.
Macneil
1
+1 @Macneil UCSD p-Code dan Smalltalk VM adalah hal-hal yang selalu saya jelaskan ketika berbicara tentang kode terkelola modern (Java, .NET). Sangat menyenangkan untuk memiliki déjà vu ketika melihat banyak hal 'modern' (seperti Apps, yang hanya merupakan rasa baru dari client-server).
Jeroen Wiert Pluimers
1
@ Joen Pluimers: Saya juga terhibur dengan pembicaraan tentang DVCS yang "baru". Saya menggunakan SCCS / Teamware di Sun, Torvalds menggunakan BitKeeper. Ketika saya melihat CVS, saya tahu itu rusak (seperti halnya Torvalds). Ketika saya pertama kali mendengar tentang SVN, saya berpikir "oh, mereka akhirnya memperbaikinya." Tapi tidak. Dunia OSS (dan Joel!) Sangat dirusak oleh CVS melakukan segala kesalahan, mereka perlu percaya itu adalah hal baru!
Macneil

Jawaban:

10

Dari perspektif sejarah bahasa, mungkin kontribusi terbesar Pascal adalah keamanan tipe yang kuat. Pertempuran itu sebagian besar sudah berakhir sekarang - pihak Pascal menang - dan titik kritis industri adalah Jawa. Tetapi untuk waktu yang sangat lama, C lebih disukai daripada Pascal oleh orang-orang yang menganggap diri mereka tumbuh coders sebagian besar karena ini: orang ingin kebebasan untuk memanipulasi pointer mereka seolah-olah mereka adalah bilangan bulat. Implementasi praktis dari Pascal memiliki celah, namun, seperti serikat pekerja yang tidak secara dinamis memeriksa bidang diskriminan, atau bahkan melakukan typecasting penuh pointer ke titik menjadi semua tapi setara C (Turbo Pascal adalah salah satunya).

Ini, dan penyederhanaan spesifikasi ALGOL 68 yang rumit [1], mungkin menjadi titik awal.

[1] Coba baca laporan ALGOL 68 kapan saja - pasti produk dari tahun 60an! Satu situs di web menyebutkan beberapa jargon ganjilnya: 'token bus', 'pohon produksi tak kasat mata', 'lingkungan primer', 'persatuan incest', 'gagasan', 'protonotions', 'metanotions', 'metanotions', 'hypernotions', ' paranotions ', dll.

Barry Kelly
sumber
15

Saya akan mengatakan bahwa dua kekuatan pendorong terpenting sepanjang sejarah Pascal adalah:

  1. Jenis keamanan: Pascal adalah mani dalam menciptakan keyakinan bahwa keselamatan jenis penting dan kritis dalam suatu bahasa.
  2. Efisiensi penyusun: Pascal selalu dirancang sebagai bahasa pas tunggal, dan menunjukkan kepada dunia seberapa cepat penyusun bisa tanpa memberikan daya. Hal-hal yang membuat kompiler cepat juga hal-hal yang membuat bahasa yang dirancang dengan baik, mudah dibaca juga. Genuis Borland juga menyediakan semua itu dan kinerja.
Nick Hodges
sumber
Bukankah PASCAL juga bahasa pertama tempat kompiler ditulis dalam PASCAL sendiri? Hal luar biasa lain pada waktu itu adalah kode-P - kode untuk mesin pascal virtual. Yang harus dilakukan seseorang untuk mengimplementasikan PASCAL pada mesin yang berbeda adalah menulis juru bahasa atau assembler untuk kode-P.
Ingo
Saya akan menambahkan bahwa keamanan jenis juga termasuk mekanisme yang dikenal sebagai pemeriksaan runtime di sebagian besar kompiler pascal. (Hampir?) Setiap kompiler memilikinya, yang secara fundamental berbeda dari pendekatan LINT yang disukai oleh kompiler C.
Marco van de Voort
11

Anda benar-benar harus kembali ke asalnya - temukan beberapa sejarah Niklaus Wirth. Pascal memulai hidupnya sebagai bahasa pengajaran. "Algoritma + Struktur Data = Program" adalah titik awal yang baik.

Pada saat itu, Pascal jauh lebih sederhana daripada Algol 68 dan PL / 1. Itu memaksa struktur dan deklarasi, dan keamanan tipe yang kuat, tidak seperti Fortran4 (Fortran 77 sedikit meningkatkan hal-hal di sana tetapi Anda masih bisa bermain sangat cepat-n-longgar). Dan dibandingkan dengan COBOL itu pendek, sederhana dan lebih mudah untuk menulis program. (Halo dunia dalam sekitar 6 baris, bukan 600).

Ketika itu berasal, ada hal-hal seperti array karakter di Pascal - itu saja untuk penanganan string. Banyak hal membaik selama bertahun-tahun.

Jika Anda benar-benar ingin mempelajari sejarah Pascal, beberapa poin yang harus Anda perhitungkan:

  • Wirth's original (Standard Pascal)
  • ekstensi oleh Digital Equipment Corp (DEC) di Vax
  • UCSD p-System (pada banyak mesin tetapi terutama Apple-2)
  • Turbo Pascal
  • Apollo Domain Pascal (digunakan untuk menulis sistem operasi Domain / OS, juga disebut Aegis)
  • Turbo Pascal dengan objek dan unit (ver 5.5 dan yang lebih baru. Edit: baru ditemukan TP 5.5 OOP PDF )
  • Delphi

Kembali pada 1980-an ada pesta siput besar antara Pascal dan C. Ada banyak perkembangan dan aktivitas yang terjadi di kedua kubu.

Sebagai akibatnya, hal-hal aneh dan indah seperti Bliss-32, Algol, dan PL / 1 telah cukup banyak menghilang - tetapi ide-ide dari ini membuat jalan mereka ke Pascal.

Sunting: array karakter dapat dikemas yang memberikan beberapa properti khusus, tetapi jika Anda menginginkan apa yang sekarang kita kenal sebagai penanganan string, Anda perlu menumbuhkannya sendiri.

dengan cepat_now
sumber
IIRC ada sejumlah kecil penanganan khusus untuk packed array[1..n] of char;, misalnya dalam Baca (ln) dan Tulis (ln)
Gerry
Ya, readln, writeln sedikit istimewa karena mereka dapat menangani input / output dari sejumlah variabel karakter. Ada juga sedikit kehancuran di akhir 1980-an tentang mereka menjadi jahat dan berdosa dan melanggar konstruksi bahasa karena mereka menerima sejumlah parameter. Kaum puritan membenci ini. Sisanya hanya menggunakannya tanpa terlalu khawatir.
quick_now
Mungkin modul / unit sistem dari Modula2 bahasa Wirth "lain". (Meskipun mungkin tidak langsung melalui upaya yang dihasilkan untuk mendapatkannya di stand Pascal, akhirnya membuat standar Extended Pascal, meskipun dengan sintaks yang berbeda)
Marco van de Voort
5

Ekstensi Berorientasi Objek! Object Pascal adalah lompatan standar (tidak resmi) terbesar dengan rilis Delphi (1) pada pertengahan 90-an. Sulit untuk memilih hanya satu, tetapi seluruh inti dari model objek secara keseluruhan membantu membawa bahasa ke status modern. Sayangnya sampai hari ini belum dibuat menjadi standar tunggal tunggal resmi yang semua kompiler akan menyesuaikan untuk kode simetri.

Untungnya pengembang proyek Free Pascal telah cukup mengakomodasi fitur yang ditambahkan ke Delphi oleh Borland dan Embarcadero. RemObjects tidak begitu banyak tetapi setidaknya mereka memiliki ikatan dengan Embarcadero di bawah Delphi Prism sehingga penyimpangan dari standar (untuk membuat bahasa lebih sesuai dengan .NET) akan sangat didokumentasikan.

Jason McMillen
sumber
8
Objek diperkenalkan ke Pascal dengan Turbo Pascal 5.5
mcottle
1
prosedur dan fungsi secara default statis. Anda harus menggunakan virtualkata kunci untuk membuatnya dapat ditimpa oleh subclass.
1
Virtual bukan kata yang dilindungi undang-undang di Delphi. Daftar kata-kata yang dilindungi undang-undang Delphi dan kata kunci Prism dapat ditemukan di sini dan di sini .
David I
2
Objek diperkenalkan ke Pascal oleh Apple. en.wikipedia.org/wiki/Object_Pascal#Early_history_at_Apple
Carl Manaster
2
@Carl - Saya lupa bahwa Mac klasik diprogram dalam Pascal, dan saya tidak tahu bahwa itu adalah versi OO dari Pascal yang dibuat oleh Wirth.
mcottle
4

Hanya satu atau dua hal yang saya ingat dari menggunakan Pascal dahulu dengan MS-DOS:

Turbo Pascal kurang lebih memperkenalkan semacam IDE di tahun 80-an (dan kinerja kompilasi mendapat dorongan besar dibandingkan dengan UCSD Pascal

Entah bagaimana sekitar pertengahan 90-an Borland mengubah nama dari Turbo ke Borland Pascal . Sebagai langkah pertama, Unit diperkenalkan, yang memungkinkan untuk membagi proyek-proyek besar menjadi unit kompilasi yang terpisah.

Kemudian mereka menambahkan pemrograman berorientasi objek juga.

thorsten müller
sumber
Turbo Pascal adalah produk sederhana. Borland Pascal memiliki BANYAK hal tambahan seperti assembler dll.
2
Unit di mana diperkenalkan di Turbo Pascal (v4 IIRC). Ini dikompilasi ke file .tpu (turbo pascal unit), yang merupakan pendahulu dari file dcu saat ini. Saya percaya mereka didasarkan pada konsep-konsep dari bahasa Modula-2 Wirth.
Gerry
1
ISTR p-System UCSD memiliki unit juga, tapi saya tidak tahu apakah mereka mendahului Turbo Pascal atau tidak.
TMN
Yang menarik, kartrid "BASIC PROGRAMMING" untuk Atari 2600 menyediakan pada tahun 1980 layar pemrograman yang secara mengejutkan mirip dengan layar CodeView; seseorang dapat melihat program (dengan titik eksekusi saat ini disorot) di satu area layar, nilai-nilai variabel dalam satu detik, dan setiap output dari pernyataan "cetak" dalam sepertiga. Sayangnya, jumlah RAM yang tersedia untuk programmer sangat terbatas sehingga tidak hanya terbatas pada aplikasi "mainan" - bahkan tidak banyak mainan. Masih prestasi teknis yang menarik untuk platform dengan ...
supercat
... sebuah 128 byte RAM kekalahan (termasuk 24 byte yang diperlukan untuk pointer layar), dan dengan seluruh sistem pengembangan pas dalam 4K ROM (termasuk bentuk karakter). Mengingat kendala-kendala itu, memungkinkan pengguna 64 byte RAM untuk memegang program mereka, variabel, dan output adalah trik yang cukup rapi. Sayang sekali Atari merilis Basic Programming sebelum mereka mengembangkan chip "SARA" (yang menggandakan RAM dari 128 byte menjadi 256). Mampu menggunakan 128 byte RAM untuk program plus 64 untuk variabel dan output akan jauh lebih baik daripada memiliki 64 byte untuk semuanya.
supercat
4

Salah satu langkah evolusi inti dalam Pascal adalah gagasan yang tepat tentang string. ISO 7185 ("Pascal Standar") tidak memilikinya, yang agak memalukan. Namun, semua programmer nyata membutuhkannya, dan implementasi Pascal yang layak (seperti Borland / Turbo Pascal) memang menyediakannya.

MSalters
sumber
4

Melihat kembali pada inovasi bahasa Pascal Delphi - Saya akan menambahkan model Properti, Metode, Acara (PME) dan bagian "Diterbitkan" untuk kelas. Itu membuat kode asli, mudah digunakan dan memperluas pembangunan komponen menjadi mungkin. Komponen memenuhi janji Brad Cox tentang IC Perangkat Lunak.

David I
sumber
3

Pertarungan antara banyak rasa Pascal di tahun 80-an dan awal 90-an.

Anda memiliki Apple Pascal , Microsoft Pascal dan QuickPascal , dan Turbo Pascal .

Semua memperkenalkan Object Pascal dalam satu cara atau yang lain (QuickPascal 1.0 dan Turbo Pascal 5.5 sekitar kerangka waktu yang sama). Apple karena mereka membutuhkannya untuk platform mereka, Microsoft dan Borland karena OO menjadi 'keren' (kemudian QuickPascal meninggal segera setelah itu, dan Turbo Pascal 6.0 menambahkan kerangka kerja OO yang masuk akal yang disebut Turbo Vision ).

Rudy Velthuis cukup lengkap dalam hal ini di postingan forumnya .

Anda dapat mengunduh gambar ISO dengan DOS 6.22 dan beberapa kompiler Pascal DOS dari era itu .

Jeroen Wiert Pluimer
sumber
2

Saya pikir pengenalan antarmuka (dalam Delphi 3 IIRC) sangat penting untuk menjadikannya bahasa berorientasi objek modern.

François
sumber
Perhatikan bahwa pewarisan antarmuka bukan OO di dalamnya, tetapi dianggap sebagai salah satu bentuk polimorfisme yang paling benar. Karena berbagi format VMT yang sama dengan COM , itu membuat interoperating dengan COM jauh lebih mudah (orang memiliki pendapat luas tentang hal itu baik atau buruk <g>).
Jeroen Wiert Pluimers
2

Saya akan menambahkan metode anonim dan generik ke dalam campuran.

gabr
sumber
1
Untuk versi terbaru dari Delphi, mungkin. Saya menggunakan hingga Delphi 7, jadi tentu saja tidak pernah menggunakan metode anonim atau generik!
Frank Shearar
2

Bagi saya dua hal terbesar (setelah beberapa bahasa lain seperti C ...) adalah case insensitivity dan kecepatan kompiler.

Dan setelah itu adalah fakta bahwa lebih mudah untuk menulis dengan keyboard Finlandia, karena saya tidak perlu terus {} atau tombol lain yang sulit dijangkau ...

Saya sudah naik sejak Delphi2 tetapi menggunakan D1 dalam beberapa tahun kerja ...

Tommi Prami
sumber
1

Mulailah dengan "Pemrograman Terstruktur" , oleh Dahl, Dijkstra, dan Hoare. Bagian Dijkstra adalah fundamental, bahkan hari ini. Bagian Tony Hoare tentang penataan data meletakkan banyak dasar untuk PASCAL. (Bagian Dahl berbicara tentang apa yang akhirnya menjadi pemrograman berorientasi objek. Dia menggambarkan apa yang menjadi kelas dalam Simula 67.)

Lihat ALGOL-W, implementasi Wirth tentang varian ALGOL-60.

Anda juga perlu tahu tentang PL / I dan editor tautan IBM 360 (tautan) pada saat itu. Itu adalah keajaiban umum, dengan masalah kecil yang berlari lebih lambat dari molase pada bulan Januari di Juneau, Alaska. PASCAL secara khusus dirancang untuk dikompilasi dan dihubungkan dalam satu pass, untuk kecepatan. (Itu memang membantu bahwa bahasa tersebut memulai kehidupan pada superkomputer junior CDC 6400, dengan banyak memori, membuat kompiler satu-pass praktis.)

Sebenarnya ada dua versi utama PASCAL dari ETH Zurich. Bahasa yang dikenal semua orang sebagai PASCAL sebenarnya adalah PASCAL2, versi kedua.

John R. Strohm
sumber