Saya termotivasi oleh Compiler Construction As A Subject pertanyaan dan berpikir saya akan menanyakan yang ini.
Saya telah mendengar dari beberapa orang bahwa mereka memiliki "tim penyusun" yang baik (jangan bertanya di mana saya mendengarnya, saya tidak ingat), sehingga membuat saya bertanya-tanya, bagaimana cara mendapatkan pekerjaan di tim seperti itu ?
Saya tahu ada kelas-kelas di dalam program-program Undergrad dan semacamnya, tetapi apakah itu sesuatu yang minimal akan menjadi gelar sarjana (seperti Master setidaknya)?
Saya memulai Magister Ilmu Komputer dalam dua bulan dan sekolah saya akan memiliki dua kelas kompiler, apakah itu cukup untuk mendapatkan pekerjaan melakukan pengembangan kompiler atau akan lebih banyak waktu perlu diinvestasikan di dalamnya?
Jawaban:
Ya, pengembangan kompiler adalah ultra hardcore yang artinya membutuhkan banyak kesabaran, semangat, dan pengetahuan yang solid. Jangan mengacaukan kesabaran, semangat, dan pengetahuan yang kuat dengan gelar apa pun. Kami telah melihat beberapa pelamar dengan gelar Master yang bahkan tidak bisa mengenali
strlen()
dalam empat baris kode C.Pasti menghadiri kelas-kelas itu dan mendapatkan pengetahuan praktis. Mungkin Anda bahkan tidak akan menyukai pengembangan kompiler, tetapi pengalaman yang Anda peroleh akan membantu Anda mendapatkan pekerjaan pengembangan lain yang sangat menarik.
sumber
Langkah pertama adalah memiliki latar belakang CS yang baik - berpotensi, semakin banyak semakin baik, tetapi setidaknya telah menyelesaikan gelar BSc Honours. Sebenarnya ada beberapa pembenaran untuk ini, di mana kompiler (umumnya, penerjemah bahasa) dan teknik yang terkait (lexing, parsing) dipelajari dengan baik dasar-dasar ilmu komputer.
Saya percaya bahwa pengembangan kompiler industri (termasuk open source) yang substansial tentu saja akan mengurangi kurangnya kepercayaan akademis - tetapi sangat tergantung pada latar belakang kandidat. Perhatikan bahwa pengembangan kompiler di sini juga akan mencakup penerjemah dan alat terkait untuk parsing.
Kompetensi umum dalam rekayasa perangkat lunak diperlukan. Pengetahuan domain tentang aplikasi yang membutuhkan kompiler yang baik (misalnya perhitungan ilmiah, pengembangan game) atau pengalaman pemrograman bahasa assembly di atas dan di luar latar belakang pemrograman umum dalam bahasa tingkat tinggi juga merupakan nilai tambah. Pengetahuan tingkat ahli tentang bahasa yang diterapkan oleh kompiler juga merupakan nilai tambah.
Penafian: Saya adalah pengembang kompiler, dan telah terlibat dalam mewawancarai kandidat.
sumber
Sekarang, alat seperti Flex , YACC dan beberapa alat serupa telah membuat konstruksi kompiler lebih sederhana. Jika Anda ingin mendekatinya seperti hobi karena itu membuat Anda terpesona, maka alat-alat ini akan membantu Anda dan Anda akan dapat membangun front-end compiler yang layak dalam sebulan.
Buku Naga adalah salah satu buku favorit sepanjang masa bagi siapa saja yang ingin mempelajari sendiri konstruksi kompiler. Dan ketika Anda melanjutkan, Anda akan menghabiskan waktu membaca kode kompilator opensource .
sumber
Jika Anda serius tentang karir di kompiler, saya percaya bahwa Anda setidaknya memerlukan pendidikan formal dalam teori bahasa, terutama teori tipe, semantik formal dan teori komputabilitas. Bidang-bidang ini akan sulit dipelajari di luar lingkungan akademik. Untuk sebagian besar, konstruksi kompiler per se adalah subjek yang dapat dipelajari dengan cerdas oleh para pengembang cerdas. Namun, jika Anda ingin bekerja pada compiler terdepan yang menggunakan analisis dan instrumentasi semantik yang luas untuk keamanan dan optimalisasi, Anda mungkin memerlukan setidaknya tesis master di bidang ini.
sumber