Saya bukan sarjana ilmu komputer dan bekerja sebagai pengembang web (java, python, AS3 dll.) Sebagai profesional. Saya mengambil 1 program per semester di universitas lokal saya. Saya telah mengambil Artificial Intelligence (terdiri dari logika, tata bahasa bebas konteks, penguraian CYK, NLP pengantar, rantai markov, HMM dll) semester lalu.
Saya berencana untuk mengambil kursus pengantar dalam kompiler di semester mendatang yang mencakup silabus berikut:
Analisis Leksikal, Analisis Sintaks, Analisis Semantik, Lingkungan Run-Time, Representasi Menengah, Pembuatan Kode, Alokasi Daftar, Pemilihan dan Penjadwalan Instruksi, Pengantar Optimalisasi Kode Lokal dan Global, Analisis Aliran Data
Pertanyaan saya adalah, apakah ada mata pelajaran ilmu komputer yang harus saya ketahui sebelum mengambil kursus ini? Jika ya, alangkah baiknya jika Anda bisa mendaftar kursus-kursus tersebut.
sumber
Jawaban:
Anda mungkin harus memiliki pemahaman sederhana tentang topik-topik berikut:
Opsional, dan mungkin akan banyak membantu:
sumber
Yah, saya telah melakukan sedikit pekerjaan dalam menulis kompiler saya sendiri, dan saya akan mengatakan prasyarat utama adalah pemahaman yang kuat tentang hal-hal yang akan Anda dapatkan di kelas Struktur Data. Khususnya, jika Anda tidak memahami rekursi, pohon, dan tabel peta / hash, Anda akan tersesat dengan sangat cepat mencoba belajar membangun kompiler.
sumber
Anda akan memerlukan latar belakang dasar arsitektur komputer (register, memori, register tujuan khusus, dll) dan telah melihat beberapa kode assembly sebelumnya. Akan lebih baik jika Anda telah menulis beberapa kode assembly sebelumnya, sehingga Anda memiliki pemahaman yang adil tentang cara kerja bahasa mesin.
Tergantung pada tingkat kursus, mungkin Anda diharapkan tahu sedikit tentang pemrosesan superscalar dan sejenisnya.
sumber
Jika ini sama sekali seperti kelas kompiler yang saya ambil di akhir Cretaceous (sekitar 1988), satu-satunya prasyarat nyata adalah struktur data (pohon dan tabel hash khususnya), beberapa bahasa rakitan (untuk kode yang dihasilkan), mungkin beberapa arsitektur komputer, dan kelas apa pun yang akan mengajarkan hal-hal seperti ekspresi reguler, automata terbatas, mesin Turing, dll. meskipun itu mungkin dibahas sebagai bagian dari kursus kompiler itu sendiri (FWIW, milik saya tidak). Anda juga ingin memastikan Anda memahami rekursi.
sumber
Anda mungkin perlu mengikuti kursus tentang model dan bahasa formal juga. Apa pun yang mencakup hierarki Chompsky dasar akan baik-baik saja: Bahasa Reguler + Bahasa Gratis Konteks. Ini karena penting untuk memahami dasar-dasar matematika parsing sehingga parser Anda bersih, performan, dan benar. Saya pikir bahwa kelas kompiler yang bagus akan sering mencakup Regresi Reguler dan parser LALR / LL (k) dan teori di belakangnya.
sumber
Karena mereka sedang berbicara tentang optimasi kode, mungkin ada beberapa kode langauge perakitan di sana. Jadi mungkin baik untuk memiliki pengetahuan yang lewat setidaknya. Itu akan tergantung pada bagaimana kursus khusus itu disusun. Kalau tidak, hanya memiliki seperangkat keterampilan pemrograman yang kuat harus cukup untuk intro ke kompiler kelas saya akan berpikir. Ini akan menjadi kelas yang sangat berharga.
sumber
Tergantung pada uni Anda, tetapi sebagian besar membutuhkan prasyarat ini:
sumber