Apa keuntungan dari belajar dan memahami konstruksi kompiler?


10

Saya seorang sarjana di tahun ke-3 saya dari gelar Rekayasa Perangkat Lunak. Mulai tahun ini, universitas saya telah memperkenalkan kursus baru yang disebut 'Konstruksi Kompiler', yang mengajarkan Anda dasar-dasar teori membangun kompiler.

Apa yang akan menjadi keuntungan dunia nyata bagi Insinyur Perangkat Lunak dalam mempelajari konstruksi kompiler?


2
Meskipun saya benar-benar tidak menyesal mengambil kursus kompiler, itu adalah yang paling sulit yang pernah saya miliki. Kebanyakan kursus CSci memiliki teori signifikan yang harus dipelajari, atau banyak pemrograman, bukan keduanya. Compiler memiliki keduanya.
David Thornley


1
Saya melakukannya di uni di tahun ke-3 saya juga. - Apakah modul terbaik ke-2 yang saya ambil di seluruh kursus (Setelah AI).
TWith2Sugars

@ TWith2Sugars: Mengapa Anda mengatakan CC adalah salah satu yang terbaik?
Nipuna

1
uang itu turun beberapa kali untuk saya di kelas - ditambah dosen yang menarik dan sesama mahasiswa yang baik menjadikannya sesuatu yang sangat saya nikmati. Salah satu momen yang saya ingat adalah kami mulai melakukan ekspresi tata bahasa pada awalnya dan dosen berkata "Ini tidak masuk akal sampai istilah kedua" - Istilah kedua adalah ketika kami mulai membangun sisa kompiler (1'st istilah kami membangun parser / tokeniser). Itu bagi saya membuatnya menjadi modul yang hebat.
TWith2Sugars

Jawaban:


12

Ada sisi praktis untuk mempelajari konstruksi kompiler. Ada beberapa kesempatan di mana saya perlu membuat parser untuk mengimplementasikan beberapa bahasa perintah khusus aplikasi. Itu memungkinkan saya untuk membuat antarmuka yang fleksibel dan skrip untuk aplikasi.

Ini juga memberi Anda wawasan yang lebih luas tentang mengapa beberapa bahasa dirancang seperti itu, dan mengapa tidak ada bahasa yang sempurna.

Ini adalah kursus yang sulit, salah satu yang paling sulit dalam kurikulum. Saya membuat kesalahan dengan mengambilnya selama sesi musim panas; Jangan pernah mengambil kursus kompiler di sesi musim panas, otak Anda akan meledak.


5
+1 untuk otak yang meledak. Juga, jangan pernah menunda menulis kompiler Anda sampai akhir semester! Saya tahu dari pengalaman ...
Jeremy Heiler

20

Oh, itu bagus. Ambillah, Anda tidak akan menyesalinya.

Anda mendapatkan wawasan tentang keajaiban bahasa pemrograman, karakteristik komparatifnya, transformasi kode tingkat tinggi ke dalam bentuk yang dapat dieksekusi. Anda akan lebih memahami banyak fitur bahasa, akan memiliki pandangan yang lebih luas tentang apa yang mungkin dan bagaimana hal itu dilakukan. Anda hanya akan melihat semuanya dengan mata yang berbeda.

Adalah bijaksana untuk menghabiskan waktu di universitas untuk mempelajari hal-hal mendasar dari CS. Bahasa pemrograman konkret, alat dan perpustakaan mereka semua datang dan pergi, tetapi yayasan tetap.

Juga jika Anda selamat dari kursus (asalkan akan serius), maka Anda dapat memberi selamat kepada diri sendiri karena memiliki otak yang tepat untuk pemrograman. Selesaikan beberapa proyek praktis dengan teori ini, sebutkan dalam resume Anda dan Anda akan sangat tertarik dengan atasan yang baik.


2
Plus itu memberi Anda wawasan tentang apa bahasa yang baik / buruk, yang merupakan topik biasa di sini.
JBRWilkinson

8

Pastinya!

Ini mungkin bukan topik yang akan Anda gunakan setiap hari seperti kelas database misalnya, memahami kompiler akan memberi Anda dasar yang bagus.

Contoh serupa akan menjadi kelas Sistem Operasi. Anda mungkin seorang programmer dan tidak memikirkan bagaimana sebuah OS bekerja setiap hari, tetapi memiliki landasan di dalamnya akan membantu Anda dalam jangka panjang.


2
Program OS undergrad saya adalah tempat pertama saya harus benar-benar memahami konkurensi. Itu sangat praktis. Kursus bahasa pemrograman sarjana saya adalah yang terbaik ketika kami sedang menulis parser.
justkt

Untuk beberapa alasan di tahun ke-3 saya menghapus modul OS :( Benar-benar ingin melakukannya juga.
TWith2Sugars

6

Iya! Kursus ini akan memberi Anda pemahaman yang lebih dalam tentang parsing bahasa pemrograman, tipe data dan fungsi dan bagaimana menerjemahkannya ke dalam kode mesin untuk CPU tertentu: s.

Ini, dengan sendirinya, mungkin tidak banyak digunakan sehari-hari praktis, tetapi itu akan memberi Anda keyakinan bahwa Anda benar-benar tahu cara kerja barang . Ini sangat membantu (berbicara dengan pengalaman di sini) ketika Anda harus melakukan optimasi tingkat rendah dan menemukan bug yang benar-benar jahat, yang membuat semua orang bingung.


4

Ada banyak desas-desus tentang Bahasa Khusus Domain saat ini . Dan mereka benar-benar layak untuk semua desas-desus, potensi sejati mereka belum dieksplorasi . Jadi, keterampilan penyusun konstruksi tidak hanya menjadi penting tetapi juga penting di masa depan. Saya menghabiskan sekitar 60% waktu pengembangan saya untuk mengimplementasikan kompiler eDSL, bahkan jika masalah saat ini tidak berhubungan langsung dengan kompiler sama sekali.


apa yang Anda maksud dengan kompiler eDSL?
Nipuna

1
Karena saya menggunakan bahasa yang mendukung metaprogramming, setiap bahasa khusus domain tertanam yang saya terapkan praktis merupakan makro penyusun. Beberapa cukup rumit, dengan sistem tipenya sendiri dan banyak terjemahan, ada yang sepele, tetapi semuanya adalah kompiler. Tidak ada gunanya penerjemah kecuali mereka benar-benar dibutuhkan.
SK-logic

1

Bermanfaat untuk mengambil kursus untuk memahami bagaimana alat yang akan Anda gunakan untuk keseluruhan karir pemrograman (misalnya kompiler, interpreter, parser) dibangun, dan apa ada batasannya.

Layak juga melakukan hal ini dalam konteks akademik, karena itu memperlihatkan dasar-dasar yang menarik dan bukan banyak kompleksitas dunia nyata, yang berantakan dan terperosok dalam berurusan dengan bahasa dan arsitektur warisan yaitu banyak kompleksitas. Ini juga lebih mungkin bahwa Anda akan bisa bekerja pada semua aspek kompiler dalam membangun keseluruhan untuk kursus, daripada bekerja pada satu di industri.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.