Vitaly Bragilevsky (
@_bravit ) masih mengajar kursus Haskell dan teori algoritma di SFedU. Dia juga menyediakan kursus di tempat di kota-kota lain, adalah editor dan penerjemah banyak buku tentang Haskell dan pemrograman fungsional, adalah anggota komite Haskell 2020 dan kompiler GHC, dan merupakan pembicara aktif di konferensi. Sebagai contoh, ia akan memberikan kursus
pembuatan kompiler singkat tentang Haskell di konferensi fungsional
FPURE di Kazan.
Karena sejumlah besar kegiatan, rekaman akhir keluar selama hampir satu jam (
tautan ke audio )! Baca di bawah transkrip teksnya, di mana Vitaly berbicara tentang keuntungan karier guru, banyak buku tentang Haskell dan tidak hanya dan, tentu saja, tentang Haskell sendiri, dan apakah Anda harus jenius untuk menulis dalam bahasa ini.
- Bagaimana Anda bisa menjadi seorang guru? Dalam aktivitas Anda, jumlah pidato di konferensi, Anda tidak terlihat seperti guru biasa.
Di masa lalu saya, guru berbeda.- Nah, guru berubah. Dan saya harus mengatakan, tentu saja, kegiatan ini benar-benar tidak terlalu khas. Tapi saya selalu ingin menjadi guru. Mungkin, ketika saya masih di sekolah, saya membayangkan diri saya menjadi seorang guru dan berpikir tentang bagaimana saya akan mengajar ini lebih baik daripada mereka yang mengajar saya. Dan entah bagaimana itu pergi.
Ketika saya berada di tahun ketiga saya di universitas, saya mulai mengajar di sekolah bacaan, tempat saya lulus. Dan ketika dia lulus dari universitas, dia mulai mengajar di universitas. Ini adalah cara yang sangat alami, dan kemudian saya tidak membayangkan diri saya sebagai orang lain. Karena itu, bagi saya jalan ini sederhana, langsung, dan saya tidak punya pilihan: Saya selalu menginginkan ini, dan mulai mengajar.
- Dan bagaimana hasilnya ke institut? Apakah Anda spesialis dalam pemrograman?- Saya lulus dari Rostov State University dengan gelar dalam Matematika dan Ilmu Komputer Terapan.
Kami mempelajari banyak matematika terapan, tetapi sudah ada banyak pelatihan dalam pemrograman. Jadi ya, saya dapat mengatakan bahwa saya belajar sebagai seorang programmer.
Banyak teman sekelas saya yang mengikuti jalur programmer sekarang bekerja sebagai semacam bos programmer.
"Lalu kamu tinggal di sana dan pergi ke sekolah pascasarjana?"- Ya, saya tinggal di universitas yang sama. Saya tidak melanjutkan sekolah. Dan saya tidak terlibat dalam kegiatan ilmiah. Ada beberapa upaya, tetapi saya tidak bisa mengatakan bahwa saya terlibat dalam sains yang bertujuan. Saya terus melakukan hal-hal yang tampaknya lebih menarik bagi saya daripada melakukan sains. Di sini masih ditumpangkan bahwa di negara kami tidak ada bidang sains yang menarik bagi saya. Dan kita dapat mengatakan tidak sejauh ini. Dan untuk mempraktikkan sains dari jarak jauh, tanpa bimbingan, sendiri, saya praktis tidak bisa.
- Dan dari latihan, jika kita menerimanya, kita hanya di Novosibirsk yang ada hubungannya dengan kompiler?- Kompiler sedikit berbeda. Sekolah kompiler di negara kita cukup kuat, tetapi saya tertarik pada hal-hal yang lebih teoretis. Misalnya terkait dengan jenis.
Jika kita mengambil
Buku Naga , maka sebuah bab kecil dikhususkan untuk mengetik teori dan tidak ada yang benar-benar ada di sana. Bagian raksasa yang ditujukan untuk penguraian, segala macam hal seperti itu, tetapi yang menarik minat saya adalah tidak ada ...
Ketika saya lulus, itu menarik saya, tetapi tidak lebih. Saya lebih tertarik mempelajari hal-hal teoritis. Dan kebetulan saya mempelajarinya. Tapi itu murni belajar sendiri. Tidak ada hasil nyata, tidak ada pembuangan dalam bentuk karya ilmiah.
- Dan buku mana tentang hal ini yang bisa dibaca? Dermaga?- Jika saya tidak salah, Pierce (
TAPL - Jenis dan Bahasa Pemrograman ) dalam bahasa Inggris dirilis pada tahun
2005 . Kemudian dia diterjemahkan ke dalam bahasa Rusia, dan penerbit kemudian mengirimi kami sebuah paket ke departemen, di mana ada 5-6 buku ini diterjemahkan ke dalam bahasa Rusia. Kami mengadakan seminar di mana kami perlahan mempelajari semua ini, membuat presentasi, dan memecahkan masalah.
Tetapi sebelum itu, buku-buku dalam bahasa Inggris juga muncul. Ada cara yang bagus untuk mempelajari sesuatu - untuk memberi tahu orang lain tentang hal itu. Dan saya melakukan kursus tentang penggunaan kalkulus Ξ» untuk memodelkan berbagai konstruksi bahasa pemrograman. Ada beberapa buku dalam bahasa Inggris,
Springer's . Artinya, Anda membaca dan pada saat yang sama memberi tahu mereka yang ingin mendengarkan Anda.
- Anda mengajar berbagai disiplin ilmu dan umumnya dimulai dengan Java. Bagaimana bisa mereka mulai mengajar Haskell?- Ketika seorang guru muda datang untuk bekerja di universitas, mereka memberinya kursus, biasanya bukan pilihannya, tetapi apa yang harus dibaca. Saya memiliki kursus khusus pertama yang saya baca, yang disebut "Teknologi Web XML". Pertama kali saya membacanya pada tahun 2003. Pada awal Juli, mereka membawa saya ke departemen, mereka mengatakan bahwa ini adalah beban Anda, dan pada bulan September Anda mulai membaca kursus. Saya tidak dalam satu atau spesialis lainnya saat itu. Ditugaskan - itu berarti Anda belajar dan mulai membaca. Saya belajar XML sebagai bagian dari kursus ini, kemudian saya mulai mempelajari layanan web, entah bagaimana pemrograman, dan dari sana saya beralih ke Java. Kursus Java muncul, dan mengajarkannya sedikit selama beberapa tahun.
Yaitu, kursus muncul dari apa yang mereka perintahkan, dan baru setelah itu Anda mulai menawarkan kepada diri sendiri apa yang Anda minati dan ingin Anda baca. Jika ada tempat untuk memasukkannya ke dalam kurikulum, departemen setuju. Dan kursus FP muncul, menurut pendapat saya pada 2008/09.
Dan pada saat itu aku mengenal Haskell dengan sangat buruk. Kita dapat berasumsi bahwa dia tidak tahu. Tetapi ini biasanya tidak berhenti membaca kursus khusus. Para siswa, tentu saja, tidak mengerti apa-apa, dan saya mendiskusikan ini dengan mereka setelah bertahun-tahun. Tetapi guru, mengajar kursus individual, membaca lebih baik dan lebih baik. Saya sudah menemukan jawabannya di beberapa titik dan mulai mengajar dengan lebih baik, seperti yang tampak bagi saya.
- Dan apakah ulasan dari siswa yang menerima materi sudah berhasil?- Saya percaya pada ulasan siswa hanya jika mereka sangat kasar. Jika siswa merespons dengan baik, orang tidak dapat mempercayai ini, karena tidak jelas motif apa yang mereka miliki untuk ini. Jadi saya tidak mendengar pelecehan yang kuat. Bahkan, ketika Anda mengajar, Anda berpikir setiap kali Anda akan melakukan yang lebih baik tahun depan. Dan Anda selalu tetap tidak puas dengan apa yang sekarang. Artinya, ini adalah proses perbaikan yang berkelanjutan.
Jelas bahwa siswa berhubungan dengan studi Haskell sebagai semacam kewajiban: mereka perlu belajar, sehingga mereka belajar. Dan secara umum, mereka benar.
- Bagaimana ini mempengaruhi lulusan? Apakah ada orang yang masuk ke fungsionalisme?- Saya tahu unit yang Haskell gunakan dari mereka yang menghadiri kursus ini. Kursus itu tidak disebut Haskell, tetapi FP. Dan bagi saya itu selalu penting bahwa siswa mencoba memahami ide-ide FP, dan Haskell, bukan Haskell, adalah hal yang kesepuluh. Dan saya berharap tidak ada siswa saya yang takut menggunakan fungsi tingkat tinggi dan fungsi Lambda dalam beberapa bahasa pemrograman industri lainnya.
Dan saya pikir ini sangat normal. Dunia di mana semua orang akan memprogram di Haskell bukanlah dunia yang sangat baik. Dan jika mereka tidak takut dengan ide-ide KB - itu bagus.
- Dan mengapa itu akan menjadi dunia yang buruk?- Karena Haskell membutuhkan kerja pada tingkat abstrak yang sangat tinggi. Dan tingkat kemanusiaan tidak memungkinkan, menurut saya, untuk mendapatkan begitu banyak programmer untuk menyelesaikan semua masalah di Haskell. Semakin sedikit level programmer yang dibutuhkan, semakin baik, semakin banyak tugas yang bisa kita selesaikan. Oleh karena itu, bahasa sederhana lebih baik daripada bahasa yang kompleks.
Kita tidak dapat menuntut dari seluruh umat manusia bahwa setiap orang adalah jenius dan bahwa setiap orang memahami teori kategori. Dan kami tidak bisa menuntut agar semua orang memahami Haskell. Tetapi kita dapat membuat bahasa pemrograman yang bisa digunakan oleh hampir semua orang. Dan bahasa pemrograman seperti itu harus umum. Sudah menjadi tugas pengembang mereka untuk membuat programmer membuat kesalahan lebih sedikit sehingga program lebih jarang rusak. Tetapi ini berbeda. Persyaratan pengembang tidak boleh tinggi. Dan menurut saya, ini terjadi di bidang kegiatan apa pun.
Ambil beberapa mobil. Tingkat ahli pengemudi harus jatuh setiap saat. Artinya, harus lebih mudah dan lebih mudah untuk mengendarai mobil. Hal yang sama berlaku untuk pemrograman. Dan Haskell, tentu saja, memberlakukan persyaratan tinggi, dan itu tidak terlalu menjanjikan. Atau kita akan mengambil: tidak mengerti monad, tembak!
- Ini contoh dengan driver, ini bisa dimengerti. Saya mencoba dengan dokter. Saya tidak ingin level mereka turun seiring waktu.- Saya telah mendengar berkali-kali bahwa tingkat dokter dapat dinaikkan menggunakan tingkat perangkat lunak. Hal-hal yang berkaitan dengan diagnostik, saat ini, diselesaikan dengan baik oleh perangkat lunak. Ada analisis, ada berbagai metode pembelajaran mesin yang membantu membuat diagnosis. Dan tugas dokter adalah menggunakan semua ini. Perangkat lunak harus sedemikian rupa sehingga tingkat dokter cukup untuk menggunakan perangkat lunak ini.
Tentu saja, saya tidak mengerti ini, tetapi saya percaya bahwa ini adalah masa depan. Kita tidak perlu memiliki sejuta dokter ahli. Artinya, seharusnya bukan dokter, tetapi operator perangkat lunak yang akan mendiagnosis, meresepkan perawatan, dan sebagainya. Hal lain adalah bahwa para ahli di luar kelas diperlukan untuk mengembangkan perangkat lunak tersebut.
Ini mungkin terdengar terlalu penuh kebencian, tetapi praktik perkembangan manusia menunjukkan bahwa, tidak hanya tidak semua pintar, tetapi tidak semua harus pintar. Ini sangat normal. Jika kita memiliki 1% populasi yang cerdas, maka ini bagus, dan lebih banyak tidak perlu. Mungkin saya ingin, tetapi itu masih mustahil. Karena itu, kita memerlukan level yang berbeda, pekerjaan yang berbeda.
- Saya mendengar bahwa Anda berpartisipasi dalam terjemahan buku. Bisakah Anda membicarakan ini?- Bisnis pertama saya dalam penerbitan buku dimulai dengan yang berikut ini. Saya mendengar bahwa penerbit DMK-Press harus menerbitkan buku "
Explore Haskell for Good ." Saya tertarik dengan terjemahan ini, karena saya perlu merekomendasikan sesuatu kepada siswa yang disarankan untuk dibaca dalam bahasa Rusia tentang Haskell.
Dan saya, seperti yang saya ingat sekarang, pada akhir Desember menulis surat kepada penerbit dengan pertanyaan, seperti itu, saya mengajar Haskell, saya mendengar bahwa pekerjaan sedang dilakukan untuk menerbitkan terjemahan. Dalam kondisi apa ini berfungsi? Dan pemimpin redaksi penerbit ini, Dmitry Movchan, menjawab saya bahwa kami hampir selesai, apakah Anda ingin melihat tata letak aslinya, apa yang terjadi di sana?
Dia mengirimi saya tata letak aslinya, saya memandangnya dan merasa ngeri dengan keadaan di mana dia berada. Ada hal-hal buruk. Misalnya, setengah dari contoh kode diindentasi dengan tidak benar. Karena penerbit di Haskell tidak berpengalaman, dan di suatu tempat semuanya disejajarkan ke kiri, di tempat lain. Dan kualitas terjemahannya juga menyeramkan di banyak bagian. Dan ketika saya melihat ini, saya menulis bahwa Anda tidak dapat menerbitkan cara ini, dan Anda perlu melakukan sesuatu tentang hal itu dan biarkan saya melakukan sesuatu tentang hal itu. Saya akan menulis kepada Anda banyak komentar tentang apa yang harus dilakukan dengan teks ini.
Mereka setuju, dan dalam waktu satu setengah bulan saya mengirimkan mereka berbagai komentar pada teks. Sesuatu di sana harus diterjemahkan lagi, beberapa bagian tidak diterjemahkan, mereka harus diterjemahkan. Jadi saya berkenalan dengan penerbit dan setelah beberapa saat buku itu keluar. Di sana saya terdaftar sebagai editor ilmiah. Roman Dushkin, dan aku yang kedua. Dan begitulah dimulai.
Dan setelah itu, saya mulai menawarkan beberapa penerbit buku untuk diterjemahkan. Saya menerjemahkan dengan Artyom Pelenitsyn, kolega universitas saya, buku Byrd "
Pearls of Functional Programming ". Kami telah menerjemahkan "
Pengantar Teori Bahasa Pemrograman ", sebuah buku tipis. Saya juga menerjemahkan buku Marlow,
Programming Haskell Paralel dan Kompetitif . Atau apakah itu semua, atau sesuatu yang lain, saya tidak ingat, jujur. Ini adalah hal terakhir yang diterjemahkan oleh siswa saya, β
Program Haskell β Will Kurt.
Saya melakukan hal-hal ini untuk membuat buku bagi komunitas berbahasa Rusia, yang, dari sudut pandang saya, akan berguna baginya untuk dibaca. Saya tidak bekerja sebagai penerjemah untuk menghasilkan uang, tetapi agar buku muncul dalam bahasa Rusia. Karena kami masih memiliki bahasa Inggris - ini masalah.
- Sudahkah Anda berpartisipasi dalam Praktek Pemrograman Fungsional ? Saya tidak menemukan majalah ini sama sekali.- Ya, saya menulis artikel untuknya di edisi ketiga atau lebih. Saya menulis tentang konvolusi dan bagaimana mereka memungkinkan Anda memprogram banyak perhitungan pada daftar.
- Apa yang terjadi dengan majalah itu? Siapa yang memulainya dan mengapa semuanya macet?- Dia pergi selama beberapa tahun. Saya memiliki koleksi cetak lengkap. Saya tidak tahu semua detail bagaimana itu terjadi. Tetapi salah satu penyelenggara utama majalah ini adalah Lev Valkin,
lionet di LiveJournal. Menurut pendapat saya, dia adalah editor dari beberapa masalah pertama, kemudian ini dilakukan oleh
Zhenya Kirpichev , yang sekarang bekerja di Google. Menurut pendapat saya,
Dmitry Astapov masih
merupakan salah satu dari mereka di awal. Ini semua adalah orang-orang yang kemudian aktif di segmen LJ Rusia. Posting mereka sangat populer dan dengan diskusi raksasa. Jadi pada titik tertentu mereka memutuskan untuk membuat majalah tentang topik ini. Dan menurut saya, majalah itu sangat bagus, artikelnya ditulis dengan sangat baik.
Mereka bekerja seperti ini: penulis menulis artikel dan artikel ini sangat baik ditinjau oleh rekan sejawat. Ada proses koreksi yang serius - saya dipaksa untuk melemparkan banyak lelucon dari artikel tersebut. Valkin mengatakan kepada saya: "
Kamu membaca sekarang, itu lucu untuk kamu, dan kemudian kamu akan malu ." Membuang banyak lelucon, dan sebagainya. Secara umum, ada pekerjaan serius pada teks, dan ternyata sangat baik.
Setelah itu, saya bertemu Valkin di musim gugur dan kami berbicara sedikit tentang hal itu dan dia mengatakan bahwa ada keinginan untuk membuatnya lebih serius. Tetapi yang lebih serius - itu berarti menerjemahkannya ke bahasa Inggris untuk memperluas audiens. Terlibat dalam bentuk saat ini sepertinya tidak terlalu menjanjikan. Tetapi keputusan seperti itu akan mengarah pada fakta bahwa ia tidak akan tinggal landas di audiensi yang berbahasa Inggris, karena baik dalam jumlah besar, dan juga di Rusia, karena sulit bagi pengembang berbahasa Rusia untuk membaca dalam bahasa Inggris.
Beberapa orang tidak ingin melanjutkan dalam bahasa Rusia, mereka ingin dalam bahasa Inggris, orang lain tidak ingin dalam bahasa Inggris. Dan secara umum, kelelahan telah datang. Artinya, tidak ada orang yang mau menjadi kekuatan pendorong di belakang majalah. Karena jelas bahwa ini membutuhkan banyak waktu, dan tidak ada yang mampu membelinya. Tetapi tanpa kekuatan pendorong, ini tidak bisa ada.
Misalnya, praktik majalah Rusia modern sepenuhnya umum, dan majalah khusus tidak diperlukan, tidak ada yang tahu tentang mereka dan tidak ada yang membaca. Bahkan jika mereka ada, mereka didukung oleh beberapa organisasi, orang-orang dibayar gaji, dan dalam kasus fprog, mereka mengumpulkan sejumlah uang, tetapi itu tidak masuk ke pendapatan, tetapi untuk menjaga pers dan sebagainya.
"Apakah mereka mengirim versi cetak secara langsung?"- Ya, ada beberapa layanan, Anda bisa berlangganan dan menerima nomor biasa dari jarak jauh. Artinya, mereka dicetak, dan tidak hanya dalam bentuk elektronik. Tentu saja, senang memegangnya di tangan Anda. Valkin yang sama menghabiskan banyak waktu: dia membeli font untuk majalah sehingga itu solid. Dan itu terlihat indah. Ini semua dilakukan di TeX, yang selalu sulit. Itu banyak pekerjaan dan itu sangat sulit untuk dilakukan.
"Ingin segera melompat ke buku yang sedang kamu tulis di" Haskell in Depth "?" Apa bedanya dengan " Explore Haskell for Good "?- Buku ini diposisikan sebagai yang kedua oleh Haskell. Untuk membacanya, Anda perlu tahu Haskell. Ini adalah perbedaan pertama dari "Pelajari Haskell Anda" dan semua orang, karena mereka semua masuk dari awal, dan di sini saya bahkan membiarkan diri saya tidak menjelaskan monad. Karena semua ini sudah harus dipelajari.
Hal kedua yang penting bagi saya ketika menulis adalah bahwa buku ini harus menekankan kemampuan Haskell untuk memecahkan masalah praktis. Haskell pragmatis seperti itu dapat digunakan dalam industri. Karena itu, saya mencoba menggunakan perpustakaan. Sangat sedikit buku Haskell yang benar-benar menggunakan perpustakaan. Dalam pendekatan pragmatis, hanya ada satu buku, "
Real World Haskell, " yang diterbitkan pada 2008, yaitu, sangat lama sekali. Dan kemudian, mereka fokus sangat sedikit pada perpustakaan, meskipun mereka sudah pada waktu itu, tetapi mereka tidak banyak digunakan di sini. Dan sebaliknya, sejak awal saya menganggap perlu menggunakan sebanyak mungkin perpustakaan untuk menyelesaikan masalah. Saat Anda menggunakan perpustakaan, Anda bisa melangkah lebih jauh. Ini adalah buku kedua - fokus pada penggunaan dalam pemrograman industri.
Dan yang ketiga mungkin merupakan upaya untuk menggambarkan hal-hal yang tersebar di banyak posting blog. Secara khusus, sekarang saya sedang mengerjakan bab tentang kinerja, kinerja, dan tolok ukur segala macam dan bagaimana melakukan optimasi kode. Dan saya melihat "Haskell Dunia Nyata", katanya bagus, tapi tidak cukup. Selama 10 tahun, Haskell telah melangkah jauh ke depan dalam masalah ini dan banyak informasi yang tersebar, dan sekarang saya entah bagaimana mencoba mengumpulkannya dalam satu bab.
Haskell memiliki banyak topik di mana tidak ada sumber tunggal untuk dibaca. Jelas bahwa untuk alasan volume saya tidak dapat memberikan segalanya, tetapi meskipun faktanya disebut Haskell secara mendalam, saya masih mendalam - Anda dapat menulis sejuta halaman, dan semuanya akan semakin dalam dan lebih dalam. Tapi saya mencoba memberikan minimum tertentu, setelah itu sudah mudah untuk menonton posting blog individu dan membaca semua jenis milis yang berbeda.
Ini adalah tiga tujuan: buku kedua, yaitu kelanjutan pendidikan, pendekatan pragmatis dan pelatihan pembaca tentang topik-topik yang tersebar di banyak artikel.
- Seperti yang saya pahami, dalam waktu dekat dua buku tentang Haskell sedang dipersiapkan. Ada juga buku Granin ( graninas ) " Desain Fungsional dan Arsitektur ".- Yah, temanya masih berbeda. Dia menulis di sana tentang arsitektur aplikasi, seperti yang saya mengerti. , , , . , - .
β , . ?β , . β
Beginning Haskell: A Project-Based Approach, 2014 β. . , . . - . , - . .
, 2017 ,
, . . β
Joy of Haskell β ,
Haskell Book . β
Intermediate HaskelL β, -,
. , . , . .
, , , . , . , . - . , β . . , . , .
β ? - ?β . , - , , . , . , .
β - - ?β , . , . , . - , , .
β . - , . , ?β , (
). . . , , . , IT , . , . 15 , , . .
β Haskell 2020 . ? , ? . - Rust?β 2 .
Haskell 2020 β , . . β . , . .
β .
ghc . β ghc. , . , .
β . , . , .
, . , , , . , linear-types linear-arrows. , . , .
, β , . .
β - , , ?β . 2018 . . β
β. , . , . , , . , , , - .
β , ?β . ghc, -, 2005 . . - , , .
: , . int integer . . , int integer , integer. , double int , double. , . A B, .
β ?β , , . , . , , , . , 15 , .
β . , . , , 1% ?β - 1% β . - β , . , . . 1% , . , .
FPURE adalah satu-satunya konferensi pemrograman fungsional di Rusia tahun ini. Acara ini akan diadakan 24-25 Mei di Kazan. Lebih dari 200 perwakilan Rusia dan asing dari berbagai komunitas FP: Scala, Haskell, Clojure, F #, Elixir, dan lainnya. Anda dapat membeli tiket dan mencari tahu informasi lebih lanjut di sini .