Halo semuanya! Sedikit lebih dari seminggu kemudian, konferensi
RubyRussia akan diadakan di Moskow. Dalam wawancara hari ini, pengembang
Evrone Mikhail Morgunov berbicara dengan salah satu pembicara kami,
Markus Shirp , pencipta alat
Ruby Mutation Testing yang populer.
Pertanyaan pertama adalah tentang Mutant . Apa yang perlu kita ketahui tentang alat ini? Akan seperti apa laporan RubyRussia?Saya akan menceritakan kisah alat pengujian mutasi - Mutant. Saya ingin memperkenalkan kepada audiens konsep-konsep kunci: orang akan belajar tentang berbagai tingkat cakupan, makna dan nilai mereka.
Ini akan menjelaskan hal-hal di Ruby yang biasa kita gunakan dan anggap benar, tetapi sebenarnya ada masalah di dalamnya. Karena Ruby sangat sering memberi kami kesempatan besar untuk menembak diri sendiri.
Bagaimana Anda mulai mengembangkan mutan?Kisah ini terkait dengan pekerjaan saya di DataMapper dan implementasi selanjutnya dari DataMapper 2, yang akhirnya disebut ROM.
Projectlide Dan Kubb menulis perpustakaan aljabar relasional yang disebut
aksioma untuk mendukung perkembangan baru ini. Ketika dia menulis aksioma, dia menggunakan strategi "pengembangan terbatas". Ini mencakup banyak alat untuk bekerja dengan metrik dan pengujian mutasional.
Alat yang kami gunakan untuk pengujian mutasi disebut Hackle. Dia memiliki kelemahan operasional dan konseptual tertentu. Suatu kali saya berpikir: “Sialan, saya bahkan tidak akan mencoba memperbaikinya! Mari kita menulis yang baru dan menyelesaikan semua masalah penskalaan pengujian mutasional yang kita miliki di DataMapper2. "
Itu 5 atau 6 tahun yang lalu, karena Mutant melewati beberapa iterasi. Semuanya terhubung bukan dengan keinginan saya untuk menulis open source, tetapi dengan persyaratan proyek komersial yang saya kerjakan. Jadi pengembangan Mutant sangat tergantung pada kegiatan konsultasi saya.
Setiap kali saya memulai proyek Ruby baru, saya harus memastikan setiap bagian kode. Dan Mutant adalah alat yang saya gunakan untuk ini.
Artinya, pelanggan komersial ingin menggunakan Mutant?Ya Ini dikonfirmasi oleh fakta bahwa semua fitur yang Anda lihat adalah fitur yang pelanggan komersial minta saya tambahkan dalam beberapa tahun terakhir. Ada beberapa fungsi yang tidak ada dalam versi publik, karena klien tidak memberi saya hak untuk membuka kode sumber mereka. Tetapi kadang-kadang klien mengatakan: "Tidak ada masalah jika seseorang mendapat manfaat dari ini," yang saya sangat suka.
Saat ini, saya meninggalkan DataMapper2. Saya tidak pernah menulis fitur hanya untuk bersenang-senang. Ini hanyalah efek samping dari penggunaan komersial.
Saya pribadi tidak jatuh cinta pada Ruby, itu hanya alat untuk saya. Mutant adalah cara untuk membuat Ruby lebih efisien. Ambang untuk memasuki Mutant sangat tinggi, tetapi ketika Anda mulai, itu sangat membantu. Kebutuhan akan pelatihan adalah sesuatu yang bisa diterima.
Ini sifatnya ketika menggunakan permata gratis :)95% permata gratis hanyalah proyek hobi. Mereka tidak cocok untuk penggunaan komersial. Penulis membuatnya karena kepentingan pribadi. Saya tidak menyalahkan mereka. Tapi saya menyarankan tim pengembangan proyek komersial untuk mengingat ini ketika mereka mengambil sesuatu dari RubyGems.
Saya hanya membaca file README Mutant di GitHub. Tapi sejauh ini saya hanya mengerti sedikit.Karena alasan inilah saya perlu meluangkan lebih banyak waktu untuk menulis readme dan dokumentasi entry-level tambahan.
Untuk alasan pribadi, saya diam di komunitas selama 3 tahun: Saya punya dua anak lagi, saya pindah ke negara lain.
RubyRussia adalah konferensi pertama setelah istirahat ketika saya dapat berbicara dengan komunitas. Dan saya ingin menggunakan waktu yang saya habiskan untuk menyiapkan laporan dan lokakarya saya sebagai sumber bahan untuk dokumentasi tambahan.
Apa yang menanti kita?Pada 6 Oktober akan ada pembicaraan tentang Mutant, dan pada 7 Oktober sebuah lokakarya. Ini akan didasarkan pada contoh dunia nyata yang diambil dari proyek sumber terbuka yang menggunakan rel dan rspec.
Sejauh yang saya mengerti, Anda menggunakan bahasa pemrograman yang berbeda, bukan Ruby?Ini tidak sepenuhnya benar. Saya sering menggunakan Ruby, tetapi hanya jika ada alasan bagus untuk ini. Biasanya ini adalah aplikasi keselamatan warisan yang akan crash di bawah berat kode mereka sendiri.
Dalam hal ini, Anda tidak bisa datang dan mengganti Ruby dalam satu langkah. Melakukan incremental refactoring / "mencekik" kode Ruby adalah pekerjaan utama saya. Dan selama proses ini, tangan saya berada di siku saya di Ruby, dan di sini Mutant adalah alat utama saya untuk menghubungkan siklus refactoring / memodifikasi.
Bahasa apa yang Anda sukai?Sebagian besar Haskell. Sekarang bagi saya itu adalah bahasa yang paling seimbang dalam hal kegunaan dan kesesuaian untuk mengembangkan program nilai komersial. Haskell Type Checker menjamin banyak properti segera; properti yang saya harus perjuangkan di Ruby.
Ada beberapa bahasa dan ekstensi keren lainnya di cakrawala. Saya pikir tipe dependen akan membawa "koreksi setelah melewati pengecekan tipe" ke level baru.
Apakah Anda pikir Ruby dan Rails memiliki masa depan?Ruby dan Rails memiliki ambang masuk yang rendah, ini membantu orang dengan cepat mencapai titik di mana aplikasi menghasilkan uang. Sementara orang percaya bahwa Ruby dan Rails memiliki kualitas ini, teknologi ini memiliki masa depan.
Pernyataan sesat kecil: Aplikasi rel tidak dapat tumbuh karena kompleksitas yang diwarisi dari kerangka kerja, karena pilihan yang dibuat oleh pencipta bahasa dan kerangka kerja. Tetapi tugas teknis ini OK jika Anda memiliki alasan bisnis untuk melakukannya. Hanya punya rencana yang sudah jadi untuk membayar hutang ini.
Apa pendapat Anda tentang Rust?Saya sangat menyukainya. Sekarang saya tidak sering menggunakannya - tidak ada alasan kuat, karena proyek yang dikerjakan tidak bisa mendapatkan apa-apa dari kelebihan Rust dibandingkan dengan opsi lain yang saya miliki.
Saya terutama melakukan pengembangan backend. Atau sebut saja "RPC masif dengan logika subjek." Di sini, pertama-tama, penting untuk menjamin kebenaran program, tetapi hanya di kedua adalah kinerjanya. Komputasi sangat efisien secara komputasi, tetapi untuk ini diperlukan kontrol manual dari bagian-bagian tingkat rendah. Ini membutuhkan waktu, yang lebih baik dihabiskan untuk mengoptimalkan pola I / O tingkat tinggi (pengelompokan RPC, meminimalkan perjalanan bolak-balik, memverifikasi properti transaksional, dll.). Lebih baik melakukan ini sebelum mengoptimalkan primitif individu dengan mengorbankan bahasa, yang memberi saya lebih banyak peluang untuk optimasi.
Jika saya melakukan sesuatu yang lebih komputasional, sebuah codec video misalnya, Rust akan menjadi alat yang saya pilih.
Dan pertanyaan terakhir. Apa yang bisa Anda sarankan kepada programmer pemula?Sebagai programmer pemula, temukan proyek kesayangan dan integrasikan dengan minat di luar pemrograman. Ini perlu dilakukan cukup lama sampai belajar pemrograman mulai menghasilkan uang.
Sangat menarik! Itu seharusnya bekerja!Ya, begitulah cara saya memulai :)
Tip yang bagus! Terima kasih untuk wawancaranya! Sampai jumpa di Ruby Russia.Kami juga menunggu Anda di konferensi! Ngomong-ngomong, ada kurang dari 30 tiket yang tersisa, jadi kami tidak menyarankan menunda pendaftaran jika Anda memutuskan untuk pergi. Dan jika Anda ingin menyelami Mutant lebih menyeluruh, maka kami sedang menunggu Markus di bengkel pada 7 Oktober. Semua detail di
situs .
Anda dapat membaca aslinya dalam bahasa Inggris di
hype.codes .
Dan ini adalah tempat untuk berterima kasih kepada perusahaan-perusahaan hebat yang mendukung acara Ruby utama di Rusia:
Mitra Umum -
ToptalMitra Emas -
Gett dan
CookpadMitra perak -
Instamart ,
UCHi.ru ,
JetBrains , dan
QleanMitra Perunggu -
Bookmate dan
InSales