Halo semuanya! Pada 6 Oktober, Moskow akan menjadi tuan rumah konferensi
RubyRussia - RailsClub tua yang bagus, tetapi dengan nama baru. Pembicara tahun ini: Aaron Patterson, Charles Nutter, Godfrey Chan, Maciej Mensfeld, Markus Schirp dan banyak lagi. Dan tentu saja, 600 peserta, perusahaan terbaik dengan berdiri di lobi dan pesta api unggun.
Secara tradisional, sebelum konferensi, kami berbicara tentang topik yang paling relevan di Ruby dan Rails. Hari ini kami memperkenalkan Anda kepada
Godfrey Chan - tim inti mantan Rails, yang bekerja di Tilde, di mana ia terpecah antara membuat profiler Rails yang pintar,
Skylight , mengerjakan Ember.js, dan mengembangkan JavaScript di TC39.
Ketua Tim dari
Evrone Dmitry Matveev mengajukan pertanyaan penting kepada tamu kami.
Mari kita mulai dengan beberapa pertanyaan tentang laporan Anda tentang RubyRusia?Saya tidak ingin mengungkapkan semua rahasia! Laporan saya disebut "Turun ke logam." Saya akan berbicara tentang cara menulis kode Rubu yang agak aneh menggunakan metaprogramming untuk membuat sesuatu yang mirip dengan JavaScript. Tentu saja, kami tidak akan dapat menulis parser dan runtime JavaScript lengkap, tetapi saya akan menunjukkan beberapa keajaiban yang akan membuat sepotong kode seperti JavaScript dieksekusi di Ruby menggunakan runtime Ruby asli. Sangat menyenangkan, setidaknya saya sangat menyukainya. Ini adalah teknik yang sama dengan yang Anda dapat menulis hal-hal seperti rspec, rake, atau DSL lain di Ruby. Saya akan menunjukkan kepada siswa bagaimana Ruby mem-parsing dan menjalankan kode Anda, dan hook mana yang dapat Anda gunakan. Saya pikir laporan itu tidak hanya menyenangkan, tetapi juga mengajarkan beberapa hal bermanfaat tentang metaprogramming di Ruby.
Keren! Artinya, akan ada tips praktis, bukan?Saya tidak yakin bahwa mungkin untuk berfokus pada mereka, tetapi saya percaya bahwa dari 30 menit ini Anda akan belajar sesuatu yang berguna untuk diri Anda sendiri.
Hebat! Saya pikir laporan ini akan menarik bagi programmer dan pemula yang berpengalaman. Benar?Saya harap begitu. Setidaknya saya akan coba.
Ngomong-ngomong, kemarin saya membaca artikel Anda tentang Menengah tentang memikirkan kembali pendidikan dalam ilmu komputer. Artikel ini sangat menarik, dan saya setuju dengan pemikiran tentang perbedaan antara pendidikan universitas klasik dan kursus modern untuk programmer. Ngomong-ngomong, mengapa Anda memutuskan untuk menjadi seorang programmer?Hanya kebetulan, saya tidak pernah berencana untuk bekerja sebagai programmer, bagi saya itu sedikit hobi. Saya sangat suka bermain-main dengan komputer, mudah untuk melakukan sesuatu - tidak sengaja menghapus file sistem atau menggali lebih dalam ke dalam registri Windows. Lalu aku menginginkan sesuatu yang lebih. Setelah sekolah, saya mulai mengambil kursus tentang pengembangan situs web. Saya senang dengan kesempatan untuk membuat sesuatu yang baru di komputer. Tetapi segera saya menyadari bahwa ini tidak cukup bagi saya. Saya bisa membuat beberapa jenis permainan komputer dalam HTML, tetapi toolkit ini sangat terbatas. Suatu hari, guru saya memberi saya sebuah buku tentang PHP. Saya membaca semuanya dan, tanpa diduga untuk diri saya sendiri, menemukan dunia baru yang penuh kemungkinan, yang memberikan lebih dari sekadar HTML dan CSS. Itu sangat keren, setelah itu saya mulai membaca lebih banyak buku tentang topik ini. Bahasa berikutnya yang saya pelajari adalah Jawa. Setelah saya membaca tentang Ruby di Linux Magazine (sebenarnya bukan tentang Ruby, tetapi tentang Rails, tentu saja), dan saya pikir akan menyenangkan untuk mempelajarinya. Dari situlah semuanya dimulai, dan, seperti bola salju, bergulir hingga hari ini.
Jadi Anda beralih ke Ruby, bukan?Saya menemukan Ruby sekitar waktu saya mulai belajar Ilmu Komputer di perguruan tinggi, jadi pada saat yang sama saya juga belajar Java, C ++, Haskell dan tidak hanya belajar banyak bahasa pemrograman sekaligus. Sebagai bagian dari studi kami, kami tidak memiliki penugasan Ruby, dan saya sangat menyukainya, jadi saya selalu mencoba menggunakannya di kelas-kelas di mana Anda dapat memilih teknologinya sendiri. Ya, dalam proyek pihak ketiga mereka juga. Ketika saya lulus dari perguruan tinggi, saya memutuskan untuk mencari pekerjaan yang berhubungan dengan Ruby. Itu sederhana, karena Rails saat itu berada di puncak popularitas: banyak startup menggunakan teknologi ini. Jadi minat telah menjadi pekerjaan saya.
Sekarang apakah Anda menggunakan Ruby sebagai alat utama Anda? Atau apakah Anda bekerja dengan sesuatu yang lain?Di pekerjaan Tilde saya saat ini, saya tidak menulis Ruby sebanyak sebelumnya. Saya akan mengatakan bahwa pekerjaan saya adalah campuran JavaScript / TypeScript, Rust, Ruby dan terkadang Java. Tapi, bagaimanapun, semua pekerjaan yang saya lakukan terkait dengan Ruby.
Produk utama di Tilde adalah Skylight. Tidak semua komponen di dalamnya ditulis dalam Ruby: frontend dalam JavaScript dan Ember, backend dalam Rails, tetapi semua pemrosesan data yang masuk adalah Java dan Rust. Tapi Skylight sendiri adalah alat pemantauan kinerja untuk aplikasi Rails. Dalam hal ini, semua pekerjaan yang saya lakukan masih terkait dengan Ruby.
Hebat! Saya sendiri mendaftar dengan Skylight beberapa hari yang lalu untuk salah satu proyek, sekarang saya mengujinya. Itu terlihat menarik, dan sejak awal sudah jelas bagaimana semuanya bekerja. Saya belum banyak memperdalam, tapi saya berencana untuk mulai menggunakannya dengan sangat ketat minggu depan. Saya harap saya dapat memperbaiki beberapa masalah dengannya.Hebat, akan senang mendengar tanggapan!
Sangat menarik untuk membandingkan Ruby dengan bahasa lain. Misalnya, dengan Rust. Ruby sangat ekspresif, dan dirancang untuk membuat kode dapat dibaca. Jika Anda membandingkannya dengan Python atau dengan C ++, C #, Java, mereka, menurut pendapat saya, tidak mudah dibaca seperti Ruby. Apa yang Anda pikirkan tentang ini?Saya akan setuju. Ada dua cara untuk "belajar" bahasa baru. Yang pertama cukup dangkal: Saya mempelajari dasar-dasar sintaksis, bermain dengan contoh, dan kemudian segera melupakannya. Itu seperti itu dengan Go. Saya melakukannya pada akhir pekan, lalu selama beberapa minggu saya menulis proyek kecil di atasnya. Tapi kemudian saya tidak punya alasan untuk melanjutkan pemrograman di Go. Saya baru mempelajarinya demi rasa ingin tahu, dan dengan cepat lupa.
Di sisi lain, ada JavaScript / TypeScript, Rust dan Ruby, yang saya gunakan sepanjang waktu. Setiap bahasa ini telah membuka peluang baru bagi saya, ini sangat memotivasi.
Misalnya, ketika saya mulai bekerja dengan Ruby, saya tertarik dengan ekspresif. Tidak ada bahasa lain yang memungkinkan Anda melakukan hal-hal gila seperti metode_missing. Metaprogramming, ekspresif, dan pembacaan kode adalah hal-hal kunci yang saya sukai tentang Ruby. Akan lebih keren jika bahasa lain bisa.
Tetapi di dalamnya Anda dapat melakukan hal-hal yang tidak mungkin dilakukan di Ruby. Misalnya, JavaScript. Segalanya benar-benar berbeda dengannya daripada dengan Ruby, yang aku jatuh cinta pada pandangan pertama. Saya mulai menggunakan JavaScript sesuai kebutuhan, saya perlu menulis kode browser. Apakah kita suka atau tidak, tidak ada jalan keluar dari JS. Jika Anda ingin menulis aplikasi browser interaktif, seperti Skylight (hanya apa yang saya tertarik pada waktu itu), maka JavaScript adalah satu-satunya jalan keluar.
Saya ingin mentransfer ide yang saya sukai di Ruby ke JavaScript, jadi pada akhirnya saya mulai bekerja dengan Ember. Ini, pada gilirannya, mengarahkan saya ke TypeScript. Ketika Anda menulis kerangka kerja besar, seperti Ember, dalam JavaScript, memiliki tipe dan kompiler untuk memeriksa kesalahan sangat membantu. JavaScript dan TypeScript membantu saya memahami ini.
Gagasan yang diajarkan Rust sangat mirip dengan TypeScript. Sangat menyenangkan untuk dapat mengkompilasi seluruh program, dan untuk memastikan bahwa itu berfungsi. Bagi saya, itu luar biasa. Saya telah bekerja dengan bahasa yang dikompilasi sebelumnya: dengan Java dan C. Anda juga harus menunggu di dalamnya sampai kode dikompilasi, tetapi ini tidak banyak digunakan, karena sistem jenis dalam bahasa ini tidak menangkap kesalahan dengan sangat baik. Tetapi dalam Rust, kompiler dapat menjamin bahwa program tidak akan menyebabkan masalah memori, dan bahwa selama pelaksanaannya tidak akan ada kesalahan segmentasi (segfault). Salah satu hal tersulit untuk dilakukan dalam pemrograman C adalah masalah memori, yang sangat sulit untuk dihindari. Fitur utama dari Rust bagi saya adalah kemampuan untuk melakukan pemrograman tingkat rendah tanpa khawatir.
Omong-omong, minat saya pada Rust terkait dengan Ruby. Saya baru saja mulai bekerja di Tilde, dan saya tahu bahwa permata Skylight ditulis dalam Rust. Saya pikir akan sangat bagus untuk belajar cara menulis ekstensi asli untuk Ruby dengan cara yang sama. Saya ingin belajar cara menulis di Rust sehingga saya tidak khawatir tentang melanggar proses ruby ββpengguna, seperti yang terjadi ketika pointer salah direferensikan dalam C. Oleh karena itu, tujuan utama belajar Rust untuk saya adalah, pada kenyataannya, menulis ekstensi asli untuk Ruby.
Baru pagi ini, saya sedang mengerjakan sebuah proyek dengan Peter Wagenet dari Tilde, dan Sean Griffin dari tim Shopify dan core Rails. Sean sedang mengerjakan versi baru Rekaman Aktif yang ditulis dalam Rust untuk mempercepat bagian yang lambat. Dan tepat sebelum wawancara ini, saya sedang mengerjakan sebuah proyek di Rust yang disebut libcruby-sys, yang memungkinkan Anda untuk menulis ekstensi asli untuk Ruby di Rust.
Pada akhirnya, kita dapat mengatakan bahwa semua bahasa terhubung. Bahasa yang saya pelajari dan programkan hanyalah alat yang memungkinkan saya untuk membuat apa yang ada dalam pikiran saya.
Sangat menarik! Keren bahwa ActiveRecord akan jauh lebih cepat. Sejauh yang saya mengerti, ide ActiveRecord tidak akan berubah. Maksud saya, apakah itu ActiveRecord yang sama, dan bukan sesuatu seperti Data Mapper?Rekaman Aktif di Ruby, tentu saja, tidak akan pergi ke mana pun, itu aktif berkembang, itu digunakan. Dalam kasus JRuby, ini adalah pilihan pertama. Implementasi Sean adalah 100% kompatibel dengan API asli. Internal ditulis ulang di Rust, jadi semuanya bekerja lebih cepat, tetapi API tidak akan berubah untuk pengguna akhir.
Hal yang sama dengan proyek yang telah saya kerjakan selama beberapa tahun terakhir. Itu disebut
Helix , dan dikaitkan dengan percobaan saya dengan Rust untuk membuat ekstensi asli untuk Ruby. Sangat sulit untuk memulai karena banyak masalah keamanan memori yang perlu ditangani. Helix memungkinkan Anda untuk hanya fokus pada penulisan kode di Rust, ia mengurus kompilasi dalam ekstensi Ruby.
Saya pikir banyak menggunakan permata JSON di Ruby. Faktanya, ada dua implementasi berbeda dari permata ini. Ada implementasi Ruby murni dan ekstensi C yang mengimplementasikan API yang sama. Ini tidak terlihat, tetapi jika Anda menulis `memerlukan json`, maka kemungkinan besar versi C. akan dimuat. Jika platform saat ini tidak didukung, maka itu akan menjadi versi ruby. Tetapi, sekali lagi, API digunakan dengan cara yang persis sama dalam kedua kasus. Satu-satunya perbedaan adalah bahwa komponen internal salah satunya diimplementasikan dalam C, sehingga berfungsi lebih cepat. Selain kinerja yang lebih tinggi, tidak ada perbedaan. Ini adalah tujuan dari semua proyek semacam itu - untuk dapat menggunakan Ruby yang kami sukai, tetapi untuk mendapatkan manfaat kinerja dari kode asli saat diperlukan.
Sangat bagus bahwa Ruby akan lebih cepat. Meskipun ada pendapat bahwa kecepatan eksekusi tidak terlalu penting untuk program Ruby, tapi saya yakin semua orang akan senang jika kinerjanya meningkat.Sebagian besar saya setuju. Secara umum, ini benar. Tetapi, setelah meningkatkan produktivitas secara serius, kita dapat melakukan hal-hal yang sebelumnya tidak mungkin dilakukan di platform ini. Seperti yang saya katakan, saya belajar JavaScript karena saya ingin menulis program untuk browser, dan tidak mungkin melakukan sebaliknya. Saya pikir hal yang sama berlaku untuk kinerja. Saya tidak peduli jika kodenya berjalan 20% lebih cepat. Ini bagus, tetapi tidak begitu penting. Tetapi ketika kode berjalan 10 kali lebih cepat, ini membuka kemungkinan yang sama sekali baru.
Misalnya, jika Anda terlibat dalam pembelajaran mesin, Anda harus melakukan banyak perhitungan yang rumit. Kemungkinan besar, Anda tidak akan dapat menerapkan ini pada Ruby, karena Ruby terlalu lambat. Tetapi jika ada antarmuka untuk mudah berinteraksi dengan pustaka pembelajaran mesin asli, maka Anda dapat bekerja dengan ML bahkan di Ruby. Anda dapat menulis kode untuk mengatur semua proses dengan perhitungan di Ruby, dengan semua ekspresinya dan ekosistem permata. Bagi saya, kinerja adalah alat untuk menghadirkan fitur baru.
Ini benar sekali! Saya telah bergumul berkali-kali dengan program-program Ruby berkinerja buruk. Saya harus menulis banyak kode SQL untuk mempercepat, untuk mentransfer bagian dari logika ke sisi basis data, karena kerjanya ratusan kali lebih cepat.Itu benar, tapi saya lebih suka memindahkan kode yang bermasalah ke ekstensi asli daripada menulis ulang sebagai microservice on Go atau Haskell. Saya pikir itu baik untuk dapat menulis kode Ruby sebanyak mungkin, dan memindahkan bagian-bagian yang kritis terhadap kinerja di suatu tempat yang Anda dapat dengan mudah berinteraksi dengan di Ruby. Kesempatan itu sendiri luar biasa.
Ya, itu harus lebih cepat dan lebih mudah, lebih efisien dalam hal tugas bisnis. Tidak perlu menyewa pemrogram dengan keterampilan dan tumpukan yang berbeda, karena semuanya dapat ditulis dalam Ruby. Kedengarannya menjanjikan. Apa pendapat Anda tentang masa depan Rails? Setiap tahun, ada desas-desus bahwa Rails sedang sekarat ...Saya bias karena saya bekerja untuk perusahaan yang produk utamanya adalah alat pemantauan kinerja di Rails. Secara pribadi, saya tidak berpikir bahwa mereka sekarat, tetapi Rails pasti menjadi lebih dewasa, "matang". Bagi banyak orang di komunitas, ini adalah sesuatu yang pada dasarnya baru. Banyak dari kita bergabung dengan komunitas Rails dan Ruby ketika Rails adalah tema hype. Ada banyak antusiasme, banyak inovasi. Meskipun, banyak dari "inovasi" kami adalah hal biasa di ekosistem lain yang lebih dewasa. Banyak yang mustahil saat itu, karena ekosistemnya masih belum matang.
Itu adalah waktu yang sangat menyenangkan. Setiap hari Senin, saya menantikan episode baru RailsCasts. Permata baru setiap minggu. Misalnya, minggu ini kita membuat file PDF, minggu depan kita mengunggah file, dan kemudian sesuatu yang baru muncul secara fundamental, seperti bundler, misalnya. Itu adalah waktu ide-ide segar, menarik, semua orang punya banyak energi. Banyak orang berpikir bahwa Rails atau Ruby sedang sekarat karena emosi ini hilang.
Dan menurut saya, ekosistem baru saja matang dan menjadi lebih stabil. Kami telah bereksperimen dengan 5 cara yang sangat berbeda untuk mengunggah file, dan kami tidak perlu melakukan ini setiap minggu. Dari segi emosi, saya pasti merindukan saat-saat itu. Tapi saya tidak berpikir itu lebih buruk sekarang. Kita dapat mengatakan ini: βok, kami menjalani semua petualangan ini, mencoba berbagai pendekatan, mendapat pelajaran. Dan sekarang kami telah memilih opsi terbaik yang akan digunakan semua orang. " Saya pikir itu hebat.
Sebagian dari diriku pasti ketinggalan dorongan itu, rasa konstan perubahan dan kemajuan yang ada di komunitas Ruby saat itu. Sekarang saya melihatnya di komunitas Rust. Di sana saya dapat mengalami emosi yang sama. Ya, di Ruby, hasrat mereda. Tetapi dari sudut pandang produktivitas dan kerja nyata - semuanya tidak buruk sama sekali. Saya mengerti bahwa seseorang yang suka mempelajari hal-hal baru secara terus-menerus membutuhkan emosi seperti itu. Saya mencari dan menemukannya di ekosistem lain. Komunitas semakin matang, dan ada sedikit perubahan. Tapi secara pribadi itu cocok untukku.
Saya pikir ini adalah hal alami, dan Rails masih indah. Segala sesuatu yang terjadi - menguntungkan bisnis nyata yang mengembangkan aplikasi komersial. Saya suka Rails yang memungkinkan pendekatan yang berbeda. Misalnya, Anda dapat menggunakan trailblazer atau permata dry-rb sambil tetap dalam konteks Rails. Anda dapat menggunakan berbagai jenis abstraksi dalam kode Anda, tetapi pada akhirnya itu akan tetap menjadi aplikasi Rails. Ini yang saya suka.Saya pasti setuju dengan Anda. Saya pikir seluruh ekosistem tumbuh dewasa. Pada waktu itu, yang sekarang kita sebut "puncak" Rails, banyak startup baru muncul. Tidak ada yang peduli dengan stabilitas dan stabilitas. Kemudian Anda mendapatkan gelombang emosi dan energi baru secara konstan. Sekarang banyak dari perusahaan-perusahaan ini telah tumbuh menjadi perusahaan besar seperti Github atau Shopify, dan mulai peduli dengan stabilitas. Ini berlaku bagi banyak orang.
Sebagai sebuah komunitas, kami secara kolektif memutuskan untuk lebih memilih stabilitas daripada eksperimen. Dari sudut pandang bahasa, masih ada banyak ruang untuk eksperimen karena Ruby tetap sama. Alasan Ruby sangat bagus untuk eksperimen tidak ke mana-mana. Namun, masyarakat memutuskan untuk fokus pada menciptakan hal-hal yang berfungsi pada Rails, karena Rails telah lama digunakan secara aktif. Ketika Anda menulis permata, Anda cenderung membuat dukungan untuk beberapa versi Rails, karena ada banyak perusahaan yang menggunakannya. Akibatnya, Rails sendiri juga menjadi lebih berhati-hati, tidak perlu merusak API mereka. Secara pribadi, saya senang menjadi bagian dari proses ini.
Dari perspektif bisnis, stabilitas sangat penting. Terutama untuk sistem yang sarat muatan. Stabilitas antarmuka kerangka kerja membuat pekerjaan lebih mudah. Saya ingat saat-saat ketika sangat sulit untuk beralih dari satu versi Rails ke yang lain. Misalnya, pada saat ketika aplikasi mulai melempar banyak kesalahan karena pengkodean tidak kompatibel.Trailblazer adalah contoh yang bagus yang menunjukkan kondisi komunitas dan ekosistem saat ini. Di satu sisi, fakta bahwa itu ada adalah bukti yang cukup bagus bahwa masih ada banyak ruang untuk eksperimen di komunitas Ruby. Tapi saya pikir jika itu keluar 5 tahun yang lalu, itu akan jauh lebih populer, karena sekarang kami telah membangun ekosistem yang jauh lebih besar di sekitar Rails, dengan banyak permata.
Pada akhirnya, Anda lebih peduli tentang apa yang dapat Anda lakukan dengan tumpukan yang sudah Anda kenal. Saat Anda hanya perlu menulis aplikasi yang dapat membuat faktur, membuat file PDF, dan menggunakan soket web, banyak orang akan lebih suka menggunakan apa yang sudah digunakan orang lain - dalam hal ini, Anda dapat berbagi permata, diskusi, menemukan jawaban StackOverflow, dll.
Dalam pengertian ini, kita dapat mengatakan bahwa bagian dari komunitas Ruby telah mati. 5-10 tahun yang lalu, Anda terus-menerus melakukan hal-hal baru, tidak terlalu khawatir tentang kompatibilitas, menggunakan permata terbaru dan paling keren, karena tidak ada "bagasi" di belakang Anda. Sekarang, sebagian besar proyek di komunitas "bagasi" menumpuk dengan baik. Dan mereka yang menyukai eksperimen dan inovasi telah pindah ke komunitas dan ekosistem lain.
Saya pikir ini normal.Saya juga tidak keberatan. Itu seperti tumbuh dewasa, tahap kehidupan lainnya.
Apa pendapat Anda tentang pengetikan statis? Apakah ada prospek untuk mendapatkan manfaat dari pendekatan ini di Ruby?Saya menantikannya karena saya sudah mengalami manfaat dari hal ini dalam ekosistem JavaScript dengan TypeScript. JavaScript sangat mirip dengan Ruby.
Ini adalah bahasa yang dinamis dengan pengetikan gratis, sehingga memiliki banyak fleksibilitas, tetapi bahkan lebih banyak kesalahan saat runtime. TypeScript adalah upaya untuk membangun JavaScript sistem tipe, superset sintaksis JavaScript. Ketika Anda mengkompilasi kode, kompiler memeriksa jenis, memverifikasi bahwa semuanya sudah benar, dan kemudian cukup menghapusnya. Ketika Anda menghapus semua jenis dari file TypeScript, Anda kembali ke JavaScript murni.Saya melihat bahwa pendekatan ini bekerja dengan sangat baik. Orang-orang telah membangun seluruh ekosistem di sekitar TypeScript. Saya akan senang melihat cerita yang sama di Ruby. Jenius idenya adalah bahwa TypeScript adalah superset sintaksis JavaScript, ini adalah layer baru, tidak melarang penggunaan apa pun dari ekosistem JavaScript. Seorang programmer formasi lama dapat dengan mudah berinteraksi dengan versi kode yang tidak diketik. Pengembang lain bisa mendapatkan semua manfaat mengetik hanya dengan melihat versi yang diketik. Tetapi pada akhirnya, semua orang akan dapat memanggil perpustakaan dengan cara biasa. Bahkan jika Anda hanya menggunakan JavaScript standar, Anda dapat mengambil manfaat dari jenis, misalnya, menggunakan pelengkapan otomatis, karena seseorang telah melakukan pekerjaan menambahkan jenis ke perpustakaan JavaScript yang digunakan. Menurut sayaTypeScript adalah kemenangan besar bagi semua orang di komunitas JavaScript, apakah Anda menggunakannya secara langsung atau tidak.Mungkin ada cara untuk melakukan ini di Ruby juga, tanpa memaksa siapa pun untuk melakukan apa pun. Orang-orang yang suka mengetik akan melakukan pekerjaan mereka, dan semua orang akan mendapat manfaat darinya, apakah itu pelengkapan otomatis di editor, atau hanya mengetahui bahwa seluruh infrastruktur, misalnya, Rails, mengandung lebih sedikit bug, karena menggunakan jenis di dalam, dan itu membantu menangkap kesalahan pada tahap kompilasi, dan bukan saat runtime. Saya benar-benar ingin membuat ini menjadi mungkin di Ruby.. , . : . , , . , , , , . , .Orang yang suka tipe sebenarnya menggunakannya untuk mendokumentasikan kode. Jika dilakukan dengan benar, TypeScript melakukan pekerjaan besar ini. Bunyinya hampir seperti kode dokumentasi diri. Bahkan jika Anda tidak ingin melihat kode yang diketik, Anda dapat melihat versi JavaScript. Tetapi karena seseorang melakukan pekerjaan menambahkan jenis, Anda dapat menghasilkan dokumentasi untuk kode yang tidak diketik.Saya percaya bahwa titik kunci di sini adalah pemisahan lapisan abstraksi. Beberapa orang sangat antusias dengan tipe, sementara yang lain tidak begitu menyukainya. Sejarah TypeScript menunjukkan bahwa ada cara untuk hidup berdampingan dan berbagi pendekatan ini. Saya sedikit khawatir tentang arah pergerakan tipe di Ruby. Secara pribadi saya lebih suka menemukan cara di mana kita dapat melapisi tipe di atas Ruby dan memungkinkan dua pendapat untuk hidup berdampingan satu sama lain, daripada membuat banyak kompromi.Beberapa tahun yang lalu, Matz mendatangi kami di RailsClub. Tentu saja, kami berbicara dengannya tentang mengetik. Saya punya perasaan bahwa dia tidak terlalu optimis. Meskipun, semuanya bisa berubah.Saya pikir jika Matz tidak suka tipe, saya lebih suka cara di mana Matz tidak akan pernah melihat mereka dalam kode, daripada mencoba menulisnya sehingga itu toleran kepadanya, misalnya, sesuatu seperti komentar.Saya bisa saja salah, tetapi saya berpikir bahwa ide Matz adalah bahwa lebih mudah untuk memprogram tanpa tipe daripada dengan mereka.Ini sangat mudah bagi kebanyakan orang, dan dalam banyak kasus bagi saya pribadi. Tetapi dalam beberapa jenis program, misalnya, di Rails, Anda melewati batas. Tanpa tipe, Anda harus menyimpan banyak informasi di kepala Anda atau di dokumentasi. Pada titik tertentu, itu menjadi terlalu berat, terutama untuk proyek besar seperti Rails. Saya pikir bahkan untuk JavaScript ada aplikasi di mana kelebihan tipe tidak sebanding dengan semua kompleksitasnya. Tetapi ada proyek besar seperti Ember yang mendapat manfaat besar dari menggunakan TypeScript. Seperti yang saya katakan, keindahan layering adalah bahwa Anda berakhir dengan kode JavaScript. Anda dapat memilih satu atau lain cara tanpa mempengaruhi bagian lain dari komunitas, yang tidak membagikan ide Anda. Setidaknya pengalaman saya hanya itu.Apa saran yang bisa Anda berikan kepada pemula? Apa yang akan menjadi arah utama dalam pemrograman dalam 5 tahun ke depan?Ini adalah topik yang sangat besar, dapat dibahas untuk waktu yang sangat lama, tetapi saya punya 2 tips.Pertama, alih-alih mengejar "arus utama", pergi untuk apa yang menarik minat Anda. Mungkin saya hanya beruntung, tetapi itu banyak membantu. Ketika saya membenamkan diri di Ruby, saya mulai mencari pekerjaan yang memungkinkan saya untuk menulisnya. Karena saya sangat termotivasi untuk belajar lebih banyak tentang Ruby, saya mulai membuat komitmen di open source, dan ini membantu karir saya di kemudian hari. Ini tip pertama. Ikuti apa yang Anda minati. Jika Anda termotivasi, kemungkinan Anda akan melakukan pekerjaan dengan baik jauh lebih tinggi.Kiat kedua saya jelaskan secara rinci dalam artikel di Medium itu. Anda perlu mendekati proses pembelajaran dengan cermat, karena apa pun yang Anda lakukan, belajar adalah bagian penting dari pekerjaan. Saya merekomendasikan menemukan cara-cara yang baik untuk belajar lebih banyak daripada yang Anda ketahui, pindah ke area yang tidak Anda kenal, dan mencari cara untuk membuat dan mengubah pola berpikir untuk konsep yang berbeda. Belajar adalah salah satu keterampilan utama yang harus Anda miliki untuk dapat berkembang dalam pemrograman.Saya pikir pendidikan tinggi penting hari ini. Ini memberi orang pemahaman dan fondasi yang dalam yang tidak banyak berubah. Prinsip dasar komputer atau basis data hampir tidak berubah. Pada level yang lebih tinggi, banyak hal baru muncul, tetapi dasar-dasarnya sama selama beberapa dekade. Saya pikir pendidikan tinggi itu berharga. Bagaimana dengan kamu?Saya setuju, universitas masih penting. Saya pribadi menerima banyak dari pendidikan tinggi. Namun, saya tidak suka istilah "dasar-dasar." Selalu ada sesuatu di luar "dasar" yang bisa Anda pelajari. Hal utama adalah untuk memahami bahwa selalu ada sesuatu yang lebih dalam dari apa yang Anda ketahui, dan ia menunggu penemuannya. Dan jika Anda mulai menggali, ini mungkin akan membantu Anda dengan cara yang luar biasa.Sebagai contoh, di universitas saya mempelajari banyak sistem operasi, kompiler, dll. Tetapi saya tidak menggunakan pengetahuan ini, karena saya bekerja terutama dengan Ruby. Baru-baru ini, saya harus mengingat semua ini karena saya mulai mengerjakan utilitas yang memungkinkan Anda mengkompilasi kode Rust ke ekstensi asli untuk Ruby. Itu membuat saya memeriksa kembali semua hal ini. Aku seharusnya sudah tahu itu, tapi aku lupa hampir semua detailnya. Tetapi saya ingat konsep-konsep kunci dan tahu bahwa saya perlu ke google. Dan, yang lebih penting, fakta bahwa saya sudah mempelajari materi ini sebelumnya memberi saya kepercayaan diri bahwa saya bisa mengetahui topik ini. Ini sangat berharga untuk motivasi.Menurut pendapat Anda, seberapa bermanfaatkah bagi pengembang untuk terlibat dalam pelatihan dan bimbingan?Saya sangat suka topik ini, dan ini adalah bagian penting dari pekerjaan saya. Pelatihan, pendampingan adalah bagian integral dari organisasi apa pun, yang menjadi dasar budaya mereka. Dalam pemrograman, ini sangat penting karena selalu ada sesuatu untuk dipelajari.Kami di perusahaan mencoba membantu orang mempelajari minat mereka. Sebagai contoh, sekarang saya sedang mengajar beberapa rekan bagaimana memprogram di Rust dalam konteks proyek saat ini. Kami ingin menulis ulang lebih banyak backend dari Jawa ke Rust. Penting bagi perusahaan bahwa kita memiliki lebih banyak orang dengan pengalaman di Rust. Ini adalah investasi, jadi kami melakukan upaya untuk ini. Ketika seseorang di sebuah perusahaan tertarik pada Rust, kami mencoba mencari cara untuk memberinya sumber daya dan waktu yang diperlukan untuk belajar.Saya percaya bahwa membimbing adalah cara yang baik untuk belajar sendiri. Ketika Anda mengajar seseorang, Anda sendiri belajar untuk melakukannya dengan lebih baik.Saya memberi pelajaran Rust setiap minggu, dan setiap kali saya mengerti betapa saya tidak tahu tentang dia. Ketika saya mencoba menjelaskan hal-hal yang, seperti yang saya pikirkan, saya tahu, selalu ada sesuatu yang tidak saya ketahui. Saya menghabiskan banyak waktu setelah setiap pelajaran untuk mempelajari materi yang saya pikir sudah saya ketahui. Sumber pengalaman hebat.Ngomong-ngomong, saya ingin mengucapkan terima kasih karena mengirimkan Minggu Ini di Rails .Terima kasih
Saya sendiri tidak lagi punya waktu untuk menulis surat-surat ini, jadi sekarang saya tidak perlu bersyukur. Orang-orang yang menulisnya sekarang tahu barang-barang mereka. Dan sekarang, sebagai pembaca buletin, saya juga sangat menghargai pekerjaan mereka.Saya telah menerima surat-surat ini setidaknya selama 2 tahun terakhir. Sangat menarik untuk membaca pada hari Senin apa yang terjadi minggu lalu di komunitas Rails!Itu sangat menyenangkan! Saya senang saya memulai proyek ini.Terima kasih Mari kita bicarakan konferensi terakhir. Hanya satu bulan tersisa sebelum RubyRusia . Apa yang Anda harapkan dari perjalanan ke Rusia?Saya belum pernah ke Rusia dan, terus terang, saya tidak tahu apa yang diharapkan. Tapi saya pikir itu akan sangat menyenangkan. Saya sangat senang bahwa saya akan datang dan saya yakin semuanya akan baik-baik saja. Apa yang harus saya harapkan? Apakah ada sesuatu yang harus saya persiapkan?Haha, antara lain, kita akan memiliki after party yang luar biasa, tahun lalu semua orang akan ingat. Banyak hal: konferensi, tur, dan banyak lagi. Itu akan menyenangkan! Orang-orang di sini ramah, dan saya yakin kami akan memiliki banyak topik menarik untuk dibahas.Saya menantikan dan sangat berterima kasih atas undangannya! Entah bagaimana saya tidak pernah berpikir untuk mengunjungi Rusia. Tetapi sekarang saya menyadari bahwa saya seharusnya melakukannya lebih awal. Saya pikir saya akan bersenang-senang!Saya berharap untuk berbicara langsung di konferensi.Saya menantikannya!Sangat menarik untuk berbicara! Terima kasih untuk waktu anda! Semoga harimu menyenangkan! Sampai jumpa di Moskow!Kami juga menunggu Anda di konferensi! Dimungkinkan untuk mengajukan pertanyaan Anda secara pribadi (dan pada pesta setelah legendaris :) pada tanggal 6 Oktober. Programnya ada di sini , dan sekitar satu minggu tersisa sebelum kenaikan harga. Sekarang harga tiketnya 8.000 rubel.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 - Mitra ToptalGold - Mitra GettSilver - Instamart , UCHi.ru , Mitra Perunggu JetBrains- Bookmate dan InSales