Pekerjaan Kompiler - Berapa Banyak Pendidikan yang Dibutuhkan [ditutup]

15

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?

Jetti
sumber
2
Partisipasi dalam proyek kompiler open source (misalnya, llvm) akan menjadi keuntungan besar.
SK-logic
Ditta @ SK-Logic Saat ini saya sedang menulis kompiler untuk final CS CS saya. Memperoleh pengalaman menulis kompiler mungkin adalah cara terbaik .... seperti apa pun juga.
1
Saya akan menunjukkan bahwa salah satu nama terbesar dalam kompiler dan runtime tidak memiliki gelar. Anders Hejlsberg ... otak di belakang Turbo Pascal, Delphi, C #, TypeScript
Matthew Whited

Jawaban:

17

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.

sharptooth
sumber
terima kasih atas tanggapannya. Apakah Anda akan memberikan kesempatan kepada seseorang yang belajar sendiri dan tidak memiliki latar belakang akademis CS?
Jetti
3
hanya checkout saja dari MIT OCW
segfault
3
@Jetti: Saya akan memberikan kesempatan kepada siapa pun yang telah memberikan kontribusi signifikan kepada kompiler open-source selama bertahun-tahun, apa pun latar belakang mereka :)
Matthieu M.
@Jetti: Saya pasti akan sekali mereka membawa bukti bahwa mereka memiliki pengetahuan nyata. Sebagai contoh, jika mereka menulis tes untuk generator kode optimizer kompiler mereka cenderung bernilai lebih dari lulusan universitas rata-rata.
sharptooth
Itu menjadi lebih menarik ketika kompiler ditulis dalam bahasanya sendiri.
ott--
5

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.

grrussel
sumber
5

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
5

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.

ThomasMcLeod
sumber
1
Itu terdengar lebih seperti peran R&D daripada "peran rekayasa produk". Saya adalah seorang insinyur produk pada armcc dan LLVM (dua kompiler kualitas C / C ++ produksi) dan tidak pernah membutuhkan topik-topik tersebut, bahkan saya tidak melihat referensi mereka dalam 2 tahun saya bekerja di area ini.
dune.rocks