Pada artikel ini kita akan berbicara tentang
kursus "Bahasa Pemrograman Web" , yang diajarkan di Departemen "Sistem dan Jaringan Komputer" (IU-6) MSTU. N.E. Bauman. Contoh diberikan pada Ruby, dan kursus itu sendiri adalah 16 video ceramah yang tersedia secara gratis di saluran
Technostream . Di Baumanka, kursus ini diajarkan untuk siswa tahun kedua yang sudah akrab dengan bahasa pemrograman tingkat tinggi seperti Pascal, C ++, atau Java. Penekanan utama adalah pada pemahaman sistematis tentang teknologi yang digunakan dalam pemrograman web, dan bukan pada kedalaman pengembangan teknologi Ruby. Oleh karena itu, kursus ini juga akan bermanfaat bagi siswa yang memiliki sedikit pengetahuan tentang teknologi web dalam bahasa apa pun.
Isi
- Tentang Kursus "Bahasa Pemrograman Web"
- Konten kuliah
- Cara membuat kursus untuk universitas
- Kenapa Ruby?
- Mengapa Ruby tidak populer?
- Ringkasan
Bahasa pemrograman web
Mengapa kursus ini disebut Bahasa Pemrograman Web? Jawabannya sangat sederhana. Seperti 30 tahun yang lalu, ketika Internet baru saja muncul, jadi sekarang tidak ada cara untuk menggunakan satu bahasa pemrograman.
- Bahasa markup adalah HTML dan CSS.
- Bahasa konfigurasi dan pertukaran data - JSON, XML, YAML.
- Pemrograman Browser - Javascript (Typcript, Coffeescript ...).
- Pemrograman Server - Ruby, PHP, Perl, Java, Javascript ...
Untuk memahami pemrograman web bahkan dalam jumlah minimal, Anda perlu tahu 4-5 markup dan bahasa pemrograman (meskipun batas-batas di antara mereka sekarang kabur).
Tujuan kursus
Tujuan utama kursus adalah untuk meletakkan pemahaman tentang teknologi yang diperlukan untuk pengembangan web, karena sebagian besar proyek modern entah bagaimana terkait dengan pengembangan web. Kursus ini diatur sedemikian rupa untuk memberikan siswa dalam bentuk ringkas dasar-dasar yang dapat digunakan sebagai kerangka kerja untuk studi mendalam.
Siswa melatih keterampilan khusus secara mandiri selama pelatihan, dan tingkat pengembangan tergantung pada apakah Anda ingin membenamkan diri dalam pengembangan web di masa depan.
Penulis Kursus
Pengembang utama kursus - Ph.D. N. E. Bauman Samarev Roman Stanislavovich. Seorang programmer dengan pengalaman lebih dari 20 tahun (C ++, C, Java, Perl, PHP, Ruby dan lainnya untuk Windows, Linux, Embedded Linux, MacOS), kepala pengembangan perangkat lunak, peneliti di bidang DBMS, pemrosesan data dan data besar, bekerja di Rusia, di Jerman dan di Amerika Serikat.
Durasi dan format
Kursus lengkap meliputi 192 jam akademik: 16 kuliah selama 2 jam, 8 seminar selama 2 jam, 48 jam untuk 12 pekerjaan laboratorium. Sisa waktu dialokasikan untuk belajar mandiri. Materi video hanya menyertakan bagian ceramah. Mereka yang ingin mempelajari lebih dalam topik kursus, bahan-bahan pekerjaan laboratorium dan seminar harus belajar secara mandiri. Semua pertanyaan dapat diajukan kepada guru:
samarev@acm.org .
Hasil
Sebagai bagian dari kursus pelatihan, kami membentuk pemahaman siswa tentang tidak hanya teknologi web spesifik yang diimplementasikan dalam bahasa pemrograman Ruby, tetapi, lebih tepatnya, persepsi menyeluruh tentang masalah yang muncul saat membuat aplikasi web dan segala sesuatu yang menyertainya, menggunakan Ruby sebagai ilustrasi yang sangat bagus. Bahasa Ruby itu sendiri adalah tambahan yang berguna bagi siswa, yang dapat digunakan secara luas di luar kursus.
Isi kursus
Kuliah 1-2. Pendahuluan- Pengantar pemrograman web dalam hal arsitektur dasar.
- Informasi minimal tentang bahasa markah dan style sheet.
- Pengantar minimal untuk Javascript.
Mungkin Javascript seharusnya mengalokasikan lebih banyak waktu, tetapi karena pemrograman web berbasis browser bukan tujuan utama kursus, dan teknologi pemrograman sisi server dalam Javascript belum ditetapkan, materi yang tersedia cukup untuk pemahaman awal.
Kuliah 3-5. RubyTiga kuliah berikutnya dikhususkan untuk Ruby, karena teknologi dalam bahasa Ruby inilah yang mendasari kursus. Kuliah meliputi:
- Dasar-dasar bahasa Ruby.
- Informasi yang diperlukan tentang struktur tipe dan model objek.
- Gaya fungsional.
Kuliah 6. Prinsip-prinsip membangun aplikasi webSeseorang akan mengatakan bahwa standar ini tidak relevan, tetapi mendasari semua pemrograman web modern. Oleh karena itu, setiap programmer web hanya berkewajiban untuk mengetahui apa itu, dan harus memahami bahwa aplikasi web yang paling sederhana adalah 'Hello World'.
Kuliah 7. Rak- Rack adalah lapisan perantara untuk sebagian besar kerangka kerja web Ruby.
- Sinatra adalah kerangka kerja umum untuk membuat aplikasi sederhana.
- Contoh membuat aplikasi.
Kuliah 8. Pengantar Rel- Aspek kunci dari aplikasi Rails.
Ruby on Rails adalah kerangka kerja yang membuat Ruby terkenal dan hampir menjadi sinonimnya. Ini adalah salah satu contoh kerangka kerja yang dikembangkan dengan konsep Model-View-Controller, yang berfungsi sebagai prototipe untuk pembuatan banyak kerangka kerja web lainnya, termasuk Grails dan Django. Perhatikan bahwa konsep Rails adalah untuk menghasilkan kode sebanyak mungkin dengan generator otomatis dan menulis lebih sedikit dengan tangan.
Kuliah 9. Interaksi asinkronSebagian besar aplikasi web modern menggunakan metode asinkron, yaitu, permintaan server hilang di latar belakang untuk pengguna. Jawaban dikerjakan di suatu tempat jauh di dalam browser. Apa yang perlu Anda ketahui di sini?
- Format pertukaran - XML ​​dan JSON.
- Menjalankan permintaan asinkron dari Javascript.
- Konsep Javascript tidak mencolok seperti yang diterapkan pada Rails.
Kuliah 10. MengujiSetiap program modern harus dicakup oleh tes otomatis. Ruby melibatkan penggunaan unit test. Dan, tentu saja, Rails menyarankan bahwa tindakan apa pun harus dicakup dalam tes. Kuliah meliputi topik-topik berikut:
- Menguji berbagai aspek aplikasi web.
- Pengantar bahasa domain (karena RSpec dan Mentimun adalah contoh dari "kemanusiaan" dalam pengujian: program pengujian harus dapat dimengerti tidak hanya untuk programmer yang "disesuaikan" untuk bahasa yang digunakan, tetapi juga untuk orang normal). Perhatikan bahwa pendekatan yang digunakan dalam RSpec dan Mentimun sekarang banyak ditiru dalam alat pengujian untuk banyak bahasa pemrograman lainnya.
- Alat-alat seperti SikuliX dan Selenium, yang masing-masing dapat digunakan untuk menguji program dengan antarmuka grafis dan browser.
Kuliah 11. Teknologi XML- Bahasa query seperti Xpath, Xquery.
- XSL dan XSLT.
Tampaknya, apa hubungannya semua ini dengan pemrograman web? Tetapi XML adalah inti dari teknologi web. Fakta bahwa kita tidak menggunakan XML sebagai format pertukaran sekarang tidak menjamin bahwa setelah 5 tahun kita tidak akan mulai melakukannya lagi. Masih belum ada pendekatan terpadu untuk memverifikasi data dalam format JSON. Dan dalam kasus XML, skema markup ditetapkan oleh bahasa itu sendiri.
Bahasa query Xpath, pada kenyataannya, adalah bahasa query waypoint universal yang dapat digunakan untuk mencari elemen struktur data seperti pohon, yang termasuk JSON.
Transformasi XSLT juga merupakan cara lain untuk mengubah dokumen XML, yang pengetahuannya akan memungkinkan siswa untuk tidak menemukan kembali roda di masa depan ketika mereka menemukan ETL.
Kuliah 12. ORM (Pemetaan Objek-Relasional)Hampir semua kerangka pemrograman web modern menyediakan sarana apa pun untuk transformasi objek-relasional. Siswa perlu memahami:
- mengapa mekanisme seperti itu dibutuhkan;
- apa keterbatasannya;
- bagaimana menggunakannya dalam praktek.
Dalam hal ini, semuanya dipertimbangkan dalam konteks Ruby on Rails.
Kuliah 13. Sesi, keamanan, dan segala sesuatu yang berkaitan dengannya.- Metode penyimpanan keadaan berbasis cookie.
- Metode otentikasi khas.
- Contoh menambahkan otorisasi di Rails.
- Pertimbangan keamanan untuk aplikasi web saja.
Kuliah 14. Layanan- Aspek historis.
- Rekomendasi khusus tentang pengembangan dan penyebaran layanan mereka sendiri untuk Web.
Kuliah 15. CMS (Sistem Manajemen Konten)Dalam pemrograman web, penting tidak hanya untuk dapat menulis aplikasi, tetapi juga untuk memahami apakah Anda perlu menulisnya. Kuliah ini adalah demonstrasi jenis utama dari aplikasi web yang telah dibuat yang dapat disesuaikan dengan kebutuhan pelanggan tertentu dan, jika perlu, diselesaikan.
- Penekanan pada alat Ruby.
- CMS paling umum ditulis dalam PHP.
Kuliah 16. Hosting Aplikasi Web Ruby di InternetIdeologi umum layanan web dipertimbangkan. Asal usul arsitektur ini dengan format pertukaran XML dan modifikasi lebih lanjut di Web-API dengan JSON dan REST atau GraphQL dijelaskan.
- Server web
- Metode Virtualisasi.
- Cara meng-host aplikasi di Internet.
Cara membuat kursus untuk universitas
Sulit untuk membuat kursus pelatihan tentang topik yang berkaitan dengan pemrograman, di mana teknologi berubah setiap 5-10 tahun. Saat membuat kursus untuk sebuah universitas, perlu diseimbangkan antara pembentukan keterampilan praktis dalam bahasa pemrograman tertentu dan presentasi dari fondasi teoritis yang diperlukan untuk memahami teknologi. Dan di samping itu, perbedaan antara kursus pendidikan dan pelatihan universitas terletak pada penyajian materi secara sistematis, yang juga memberlakukan pembatasan kapan dan berapa volume materi tertentu yang dapat disampaikan.
Dalam beberapa tahun terakhir, ada kecenderungan untuk merekam kuliah di video dan membuat kursus video.
Kursus "Bahasa Pemrograman Web" adalah upaya formal pertama yang dilakukan oleh universitas kami. Dan berdasarkan umpan balik, kami akan memutuskan bagaimana dan dalam format apa untuk membuat entri baru.
10 tahun yang lalu adalah penting untuk memperbarui secara radikal kurikulum, memperkenalkan, antara lain, pemrograman web. Di Departemen Sistem dan Jaringan Komputer, kira-kira jam pelatihan yang sama secara tradisional dialokasikan untuk kursus yang berkaitan dengan elektronik dan desain komputer seperti untuk pemrograman. Selain itu, kursus pemrograman termasuk pelatihan algoritmik dalam bahasa tingkat tinggi Pascal, C, C ++ / Qt, pelatihan di berbagai assembler, serta teori bahasa pemrograman dan kompiler. Dan bahkan bahasa pemrograman untuk FPGA dan perangkat keras tertentu. Artinya, departemen mempersiapkan spesialis universal yang di masa depan memilih spesialisasi mereka sendiri.
Kami perlu mengidentifikasi teknologi web yang menjanjikan yang dapat dikuasai dalam satu semester, dan diharapkan bahwa teknologi ini dapat diproyeksikan ke bahasa pemrograman lain.
Kenapa Ruby?
Mengapa Ruby dipilih? Pilihan bahasa untuk pemrograman web cukup kaya. Selain Ruby, ini adalah PHP, Perl, Javascript, Java, Go, dan lainnya. Jika kita mendekati dari perspektif aplikasi web yang sangat sarat, kemudian mengirimkan
Tolok Ukur yang meragukan
Kerangka Web , kita lihat di garis terdepan C ++, Java, Rust, Ur, Go, dll. Ruby bukan yang paling populer untuk pengembangan web, maupun tercepat untuk solusi yang sangat dimuat. Namun, Ruby memiliki sejumlah kebajikan lain yang menjadikannya bahasa pemrograman, yang harus diperhatikan oleh setiap programmer yang berpendidikan.
Ruby baru-baru ini merayakan hari jadinya yang ke-25, artinya bahasa ini cukup matang. Terlepas dari kenyataan bahwa sebagian besar bahasa yang disebutkan juga telah melangkah atau mendekati usia ini (Rust, Dart, Go masih "hijau" dibandingkan dengan itu), Ruby adalah salah satu dari sedikit bahasa yang telah mempertahankan kompatibilitas ke belakang selama bertahun-tahun.
Di dunia Ruby, kita dapat mengatakan bahwa tidak ada revolusi dan perubahan radikal apa pun. Ini mengacu pada bahasa yang awalnya dirancang dengan baik, konsep dasar yang bertahan sampai hari ini tidak berubah. Klaim kinerja terkait dengan versi lama sebelum 1.8.7, yang dihentikan 10 tahun yang lalu. Versi modern setiap tahun menunjukkan peningkatan produktivitas ganda. Klaim bahwa bahasa ini tidak terlalu populer hanya berlaku untuk negara kita. Sayangnya, di negara kita perusahaan-perusahaan besar benar-benar tidak layak menerobosnya.
Mengapa Ruby bagus untuk pendidikan universitas? Ini adalah bahasa objek murni. Dan karena dinamis, hampir semuanya dapat didefinisikan ulang. Tidak ada tipe sederhana dalam modelnya (kita tidak akan berpikir tentang implementasi sistem di sini, kita hanya berbicara tentang model). Data apa pun adalah objek. Kode adalah objek. Yaitu, Ruby membuatnya mudah untuk mempelajari prinsip-prinsip pemrograman berorientasi objek. Selain itu, sintaks bahasa cukup sederhana dan hampir tidak memiliki pengecualian. Kode apa pun yang ditulis dalam program harus dijalankan sekali, dan tidak masalah di mana kode ini ditulis - di dalam deklarasi kelas atau di luar. Apa pun yang ditulis, itu akan terpenuhi. Sintaks Ruby sangat fleksibel, yang membuatnya sangat nyaman untuk menulis bahasa khusus domain (DSL / DSEL). Selain itu, konsep dasar Ruby - blok - adalah fungsi anonim. Menguasai prinsip-prinsip ini memungkinkan siswa untuk dengan mudah menguasai pemrograman fungsional dalam bahasa pemrograman fungsional murni.
Dan, lebih tepatnya, jasa dekoratif Ruby - tidak perlu membuang waktu untuk menjelaskan pemformatan kode dengan lekukan. Program ini jelas ditandai. Pemformatan akan secara otomatis menyediakan rubocop, dan siswa akan belajar menulis dengan benar dari waktu ke waktu.
Mengapa Ruby tidak populer?
Mengapa Ruby, dengan kelebihan seperti itu, masih belum populer dan merujuk ke bahasa dengan ambang masuk yang tinggi?
Hal pertama yang harus dipahami: Ruby bukan hanya bahasa pemrograman imperatif lain yang dapat Anda mulai pemrograman di malam hari, tetapi sepenuhnya dipahami dalam seminggu. Ini adalah bahasa yang berbeda dengan filosofi yang berbeda.
Prinsip pertama Ruby: teks program harus dipahami sebagai teks dalam bahasa alami. Yaitu, Ruby adalah bahasa untuk seorang programmer yang adalah orang, dan bukan bahasa yang Anda butuhkan untuk menemukan programmer yang tepat. Sayangnya, sebagian besar bahasa pemrograman modern mengikuti prinsip "sang programmer akan bertahan", dan mundur sudah dirasakan dengan susah payah.
Ruby sering dikritik karena melakukan hal yang sama dalam banyak cara. Tetapi dalam bahasa alami kita memiliki banyak sinonim, dan itu adalah pilihan sinonim yang tepat yang membuat pidato kita kaya. Begitu juga di Ruby. Selain fakta bahwa tindakan yang sama dapat dilakukan dengan cara yang berbeda, ada banyak sinonim yang terkait dengan metode yang sama terkait dengan metode khusus
alias
dan
alias_method
.
Contoh sederhana keterbatasan sebagian besar bahasa pemrograman lainnya. Misalkan ada serangkaian produk, dan Anda ingin menentukan bahwa itu tidak kosong. Dalam sebagian besar bahasa, kami akan menulis sesuatu seperti
if (products.size() > 0
) .... Tetapi, setelah datang ke toko, kami tidak bertanya kepada penjual: "Jika Anda memiliki lebih dari nol produk ini dan itu?" Kami mengajukan pertanyaan sederhana: "Apakah Anda memiliki produk ini dan itu?" Di Ruby, Anda perlu menggunakan metode yang mengekspresikan arti tindakan. Ya, kita bisa menggunakan cek “lebih besar dari nol”, tetapi cara alami adalah bertanya
if products.any
. Itu secara harfiah: apakah ada produk? Perhatikan bahwa Ruby berfungsi dengan baik dengan Unicode, jadi jika perlu, berdasarkan bahasa ini, Anda dapat membuat bahasa khusus dengan adaptasi regional. Misalnya, jika Anda ingin mendefinisikan ulang dalam bahasa Rusia semua nama kelas dan metode.
Contoh yang menarik, meskipun tidak sepenuhnya langsung
,: Bato: Port Ruby untuk orang Filipina .
Pada subjek objektivitas bahasa: Ruby dengan jelas membedakan antara variabel / konstanta dan objek. Karena sifat bahasa yang dinamis, data "menghidupi" hidupnya sebagai objek. Pengidentifikasi apa pun adalah konstanta atau variabel yang hanya merujuk ke objek. Kesalahpahaman prinsip ini menyebabkan kejutan:
str1 = "Test" str2 = str1 str1.sub! "Te", "La" puts str2
Di sini kita hanya menggunakan metode modifikasi objek, referensi yang disimpan oleh dua variabel. Saya perhatikan bahwa ini bukan cara tradisional Ruby untuk berubah. Biasanya, objek disimpan tidak berubah, dan perubahan memunculkan objek baru. Juga,
sub!
Metode yang digunakan di sini memiliki akhiran - tanda seru - yang merupakan skema penamaan yang diterima Ruby untuk metode yang memodifikasi objek itu sendiri. Tanpa simbol ini, metode hanya memunculkan objek baru.
Fitur lain dari Ruby, yang sangat sering membingungkan para pengembang yang datang dari bahasa pemrograman lain: konsep "blok". Secara sintaksis, blok tersebut terlihat sama seperti dalam bahasa pemrograman lain, dan dalam dua versi sekaligus:
{…}
dan
do..end
(jangan lupa bahwa Ruby dibuat untuk manusia, jadi kami memilih tanda kurung jika ekspresi adalah baris tunggal dan kata-kata jika ada banyak baris). Inti dari sebuah blok di Ruby adalah kode yang disimpan sebagai objek dan dapat diaktifkan dengan memanggil
yield
. Mitra langsung dalam C dan C ++ adalah fungsi panggilan balik. Dalam Javascript, fungsi anonim seperti
some_func('on_element_click', function(event) {…}
).
Berkat konsep ini, Ruby adalah salah satu bahasa pemrograman yang paling ringkas dan ekspresif. Misalnya, mengonversi elemen-elemen array sesuai dengan fungsi kuadrat akan terlihat seperti ini:
(1..5).map { |x| x * x }
dimana
{ |x| x * x }
{ |x| x * x }
- blok dengan variabel lokal yang dideklarasikan
x
, yaitu, fungsi untuk mengkonversi elemen array. Dan metode yang ditransmisikan hanya disebut peta (yaitu, "peta"). Dan Anda tidak perlu menulis kata
return
, meskipun ini mungkin, karena semuanya sudah jelas (di Ruby, hasil dari operasi terakhir selalu merupakan nilai balik). Selain itu, kode blok adalah kode yang disebut secara mandiri untuk setiap elemen array. Itulah mengapa tidak masuk akal untuk mencoba memulai variabel di dalam blok dan berharap bahwa nilainya akan dipertahankan selama pemrosesan elemen berikutnya. Blok adalah fungsi pemrosesan yang tersimpan, dan tidak lebih.
Jika kita ingin mengurai string dengan angka yang dimasukkan dari keyboard, cukup tulis:
gets.chomp.split.map(&:to_i)
Yaitu, baca baris (dapatkan), buang sampah seperti karakter
chomp
baris (
chomp
), pisahkan menjadi kata-kata (
split
), panggil konversi dengan fungsi
to_i
(sebenarnya, metode objek objek dari tipe "string"). Dan tidak lebih. Split tahu bahwa dalam bahasa manusia normal, "melanggar garis" berarti memisahkannya dengan kata-kata, di mana pembatasnya adalah spasi dan tanda baca. Peta dapat digunakan dalam bentuk singkat dengan nama metode yang akan diambil dari objek. Meskipun akan mungkin untuk menulis
map { |x| x.to_i }
bentuk lengkap
map { |x| x.to_i }
map { |x| x.to_i }
, atau bahkan
{ |x| return x.to_i }
{ |x| return x.to_i }
. Tetapi ini tidak meningkatkan keterbacaan, sehingga Anda dapat meninggalkan
map(&:to_i)
saja
map(&:to_i)
.
Saya perhatikan bahwa konsep blok secara jujur ​​meresapi Ruby. Bahkan kode tampilan
class HelloWorld (1..3).each { puts 'Hi from class declaration!' } def hi puts 'Hello World!' end end HelloWorld.new.hi
ditampilkan di layar:
Hi from class declaration!
Hi from class declaration!
Hi from class declaration!
Hello World!
Apa yang tampaknya tak terduga di sini? Loop di dalam deklarasi kelas mencetak pesan. Kemudian kami menerima pesan dari metode instan kelas ini. Dan rahasianya sangat sederhana. Ruby adalah bahasa dengan model pemrograman reguler. Cara khas untuk memanggil metode apa pun dengan blok:
method_with_block(args) do ... end
Kata-kata
class
dan
def
dalam contoh pada dasarnya adalah nama-nama metode yang argumen
HelloWorld
,
hi
disahkan. Argumen
HelloWorld
akan menjadi bagi kami nama konstan dari kelas, dan
hi
akan menjadi nama metode. Sisa kata
end
adalah sebuah blok. Dan kode blok diaktifkan dengan memanggil hasil, setelah itu semuanya dijalankan secara berurutan. Artinya, bahkan di sini praktis tidak ada perbedaan antara memanggil metode biasa dan mendeklarasikan metode, kelas, modul.
Perhatikan juga konstruksi aktivasi
HelloWorld.new.hi
.
HelloWorld
- konstan - menunjuk ke objek bertipe
Class
. Objek ini memiliki metode
new
. Hasil dari memanggil
new
adalah objek yang dibuat dari tipe
HelloWorld
, dari mana kita memanggil metode
hi
. Dan bahkan di sini keteraturan Ruby terwujud. Kami tidak menulis
something = new HelloWorld
, tetapi cukup memanggil metode objek tertentu (
Class
dirujuk oleh
HelloWorld
), yang menghasilkan objek tipe
HelloWorld
.
Kurangnya pemahaman bahasa juga difasilitasi oleh rantai panjang panggilan:

Jika Anda tahu JavaScript atau jQuery, maka Anda tidak akan melihat sesuatu yang buruk di sini. Mereka yang berasal dari C dan C ++ mungkin bingung tentang jumlah poin. Ruby menggunakan transformasi objek fungsional. Yaitu, keseluruhan rantai ini adalah proses mengubah string, yang terdiri dari memilih kata, mengubahnya menjadi angka, memilih hanya angka genap, mengkuadratkan dan menambahkan hasilnya.
Metode apa pun di Ruby menghasilkan objek nilai. Tidak ada pengecualian. Bahkan nihil adalah objek. Karena Ruby adalah bahasa yang dinamis dengan pengumpul sampah otomatis, tidak perlu membuat variabel baru. Objek perantara akan dihapus. Artinya, ekspresi panjang dapat dengan mudah diurai menjadi urutan pemberian nilai ke variabel lokal, yang berturut-turut memanggil metode yang sesuai. Tapi mengapa, jika semuanya sudah jelas?
Dalam program Ruby, sangat jarang untuk melihat loop seperti
for
,
while
,
loop
. Mereka disediakan dalam sintaks, tetapi hampir tidak pernah digunakan. Mengapa Ya, karena mereka tidak membawa muatan semantik.
Contoh: dalam sebuah array barang Anda perlu menemukan "roti dengan biji poppy". Untuk bahasa pemrograman tradisional, kami dapat menggunakan kira-kira kode Ruby berikut:
products…
Dalam hal ini, kode Ruby normal terlihat seperti:
products…
Artinya, kami menulis secara harfiah dalam satu baris: cari produk dengan nama. Dan itu dia. Karena pada kenyataannya kita hanya tertarik pada pemilihan barang, dan sama sekali bukan indeks barang dan bukan kuantitasnya.
Contoh kehidupan: Anda datang ke toko dan bertanya kepada penjual yang tidak beruntung dengan dua cara: pertama - “
Untuk semua barang dari nol hingga 15143, jika nama produknya sama dengan roti dengan biji poppy, maka berikan kepada saya ”; yang kedua - "
Beri aku roti dengan biji poppy ." Kedua opsi tampaknya benar secara sintaksis, tetapi yang kedua adalah alami. Untuk beberapa alasan, sebagian besar programmer menganggap opsi pertama sebagai normal. Dan programmer Ruby adalah yang kedua. Dan metode
find
sini hanyalah salah satu dari penggantian loop. Saya menarik perhatian ini, mengantisipasi komentar bahwa bahasa lain juga memiliki pencarian array dengan fungsi seleksi.
Jadi, walaupun Ruby memiliki konstruksi sintaks
for
,
while
dan
loop
, hampir tidak ada yang menggunakannya karena ada metode spesifik:
each
,
each_index
,
each_with_index
,
select
,
map
,
reduce
,
find
,
detect
dan banyak lagi yang mengekspresikan makna tertentu - untuk setiap indeks, untuk setiap elemen dan indeksnya, pilih, ubah, runtuh, temukan, dll. Dan jika kita perlu mendapatkan indeks, kita akan menggunakan
array.each_index
. Dan jika Anda perlu memilih elemen, gunakan
select
. Penekanan pada kealamian. Kami hanya bertanya apa yang benar-benar perlu dilakukan. Tidak diperlukan indeks - tidak perlu memintanya. Lihat
dokumentasi untuk modul Enumerable untuk perincian lebih lanjut.
Ringkasan
Ruby adalah bahasa yang secara sintaksis sederhana namun fleksibel dengan model objek yang dikembangkan, penekanan utamanya adalah kode yang ringkas namun dipahami dengan baik yang difokuskan pada orang yang hidup. Ruby hadir secara default di bundel sistem operasi modern apa pun (atau dapat diinstal pada Windows). Sejumlah besar program telah ditulis dalam bahasa ini, ada komunitas stabil yang siap membantu dengan saran atau tindakan. Program Ruby adalah skrip administrasi dasar untuk Linux dan MacOS (OpenSuSE / SuSE dan brew.io masing-masing), ini adalah
matematika dan pembelajaran mesin , ini adalah tes (Rspec, Mentimun, Capybara ...), ini adalah penyebaran aplikasi (Wayang, Koki) dan masih banyak lagi.
Jika siswa akan mengenal Ruby, ini akan memperluas wawasan mereka secara signifikan, dan akan memungkinkan mereka untuk melihat hal-hal yang sama sekali berbeda. Selain itu, sangat mudah untuk mempelajari bahasa pemrograman scripting lain setelah Ruby, tetapi pertanyaannya adalah apakah Anda ingin menggunakannya.