Apa yang harus diketahui oleh pengembang Python saat mempelajari Ruby? [Tutup]

16

Saya telah menjadi programmer Python selama sekitar 18 bulan, yang terdiri dari satu magang dan beberapa proyek sampingan, dan saya menganggap diri saya cukup nyaman dalam bahasa tersebut.

Namun, tampaknya ada banyak perhatian pada Ruby di bidang pemrograman, tetapi tidak banyak pada Python lagi.

Jadi dalam mempelajari Ruby, apakah akan ada hal-hal Pythonic yang merupakan praktik buruk di Ruby? Apa yang harus saya waspadai, dan apa yang harus saya hindari?

CJ
sumber
4
Saya selalu dianggap sebagai programmer Ruby jika saya harus belajar Python karena itu yang dibicarakan semua orang: P
Earlz
Meskipun dengungan tampaknya Python masih digunakan dua kali lebih banyak dari Ruby (menurut TIOBE setidaknya -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
Daniel Scocco
10
Alih-alih menjadi "programmer Python" atau "programmer Ruby," Anda harus mencoba menjadi programmer yang hebat. Kemudian, Anda dapat menggunakan bahasa apa pun yang Anda inginkan dan beralih ke bahasa baru saat waktunya tepat.
BlackJack

Jawaban:

31

Saya melakukan Python kembali pada 2003-5, ketika saya adalah seorang konsultan Plone / Zope. Kemudian pada tahun 2006 saya mulai mengambil Ruby. Saya tidak pernah melihat ke belakang. Saya pikir orang yang berbeda merasa lebih nyaman dengan bahasa dan budaya pemrograman yang berbeda, tetapi bagi saya, Ruby terasa jauh lebih baik daripada Python.

Saya pribadi berpikir bahwa dibandingkan dengan Ruby, Python adalah pekerja keras andal yang kebetulan juga sedikit tenang dan lembut. Ruby jauh lebih menyenangkan. Ini adalah bahasa yang terlihat lebih cantik, dan dapat dibuat untuk melakukan banyak hal yang menyenangkan dan funky yang terus membuat para praktisi terpesona. Saya pernah mendengar orang Python menyerang Ruby karena terlalu berbahaya, mengatakan bahwa terlalu mudah untuk membuka kembali kelas dan melakukan hal-hal liar dan tidak bertanggung jawab seperti itu. Tapi itu bagian dari apa yang membuat Ruby merasa seperti komedi komedi aksi petualangan bagiku. Python, sebaliknya, lebih seperti perabot Ikea: itu menyenangkan, nyaman, dan dapat diandalkan - tetapi itu tidak akan mengejutkan Anda dan menarik napas Anda.

Dua hal terbaik tentang Ruby, dari sudut pandang saya, adalah dua hal yang membedakannya dengan tajam dari Python. Pertama, Ruby banyak dipengaruhi oleh Perl. Python tampaknya bangga menjadi anti-Perl. Tapi barang-barang yang dipinjam Ruby dari Perl sangat praktis. Ambil ekspresi reguler, misalnya. Di Ruby, Anda dapat menulis ekspresi reguler secara alami, mis if mystring =~ /^\s+hello word!/ .... Dalam Python, tidak terlalu banyak, karena Python sangat anal tentang membuat semuanya mengikuti sintaksis yang dapat diprediksi secara seragam. Di Ruby, Anda bisa mendapatkan STDIN dengan segera input = STDIN.read. Dengan Python, Anda harus melakukannya import sysdan kemudian sys.stdin.read(). Ini hanyalah dua contoh di mana upaya Python untuk menjauhkan diri dari Perl dan bisa ditebak secara teratur dikalahkan oleh kesediaan Ruby untuk melakukan apa yang terasa benar dalam setiap kasus.

Hal lain yang membedakan Ruby dari Python adalah bahwa Ruby lebih dekat dengan Lisp sedangkan Python cukup banyak merupakan bahasa pemrograman yang sangat penting. Saya pikir ini merupakan nilai tambah dalam mendukung Ruby.

Ada banyak fitur mirip Lisp dari Ruby yang memungkinkan untuk melakukan lebih banyak dengan kode yang lebih sedikit di Ruby daripada di Python. Misalnya, setiap pernyataan dan struktur kontrol di Ruby mengembalikan nilai: Anda bisa pergi di Ruby dengan tidak pernah menggunakan returnpernyataan. Bahkan ifpernyataan mengevaluasi suatu nilai, sehingga Anda dapat menulis hal-hal seperti ini

result = if output == 'hello'
           [some code here]
           "world"
         else
           [some other code here]
           "there"
         end

Dengan Python Anda harus menulis

if output == "hello":
  [some code here]
  result = "world"
else:
  [some other code here]
  result = "there"

Python membuat Anda mengetik result =dua kali. Itu tidak terlalu KERING (Jangan Ulangi Diri Sendiri). Ada banyak contoh seperti ini di mana Ruby akan lebih KERING daripada Python karena kualitasnya yang mirip Lisp. Matz, pencipta Ruby, berasal dari latar belakang Lisp.

Beberapa orang mengatakan bahwa Ruby juga menendang pantat Python dalam metaprogramming (alias pemrograman dinamis). Orang Python merespons baik dengan mengatakan bahwa metaprogramming terlalu berbahaya, atau dengan mengatakan bahwa secara teoritis, Anda dapat menyelesaikan semua hal metaprogramming yang dapat dilakukan Ruby di Python, hanya berbeda. Tapi satu hal yang disetujui semua orang adalah bahwa metaprogramming jauh lebih jarang terjadi di Python daripada di Ruby. Dan itu terlalu buruk, karena pemrograman adalah perjalanan.

Saya pikir mungkin benar bahwa pada akhirnya Ruby dan Python dapat menyelesaikan pekerjaan. Dibandingkan dengan C dan Java, Ruby dan Python cukup banyak hal yang sama. Mereka ekspresif, produktif, bahasa tingkat tinggi.

Jadi itu bermuara pada kepribadian Anda.

Apakah Anda suka hal-hal yang dapat diprediksi, teratur, dan aman? Apakah Anda suka gaya pemrograman yang imperatif? Apakah Anda ingin bekerja suatu hari nanti untuk Google? Apakah Anda berpikir bahwa Perl adalah bibit neraka yang kacau? Tetap dengan Python.

Apakah Anda senang menemukan cara yang paling ringkas untuk mencapai beberapa hasil pemrograman? Apakah Anda bosan dengan keteraturan dan keseragaman? Apakah Anda suka memiliki kebebasan untuk menulis kode dengan gaya Anda sendiri, dan memiliki banyak ruang untuk menghasilkan trik keren Anda sendiri? Apakah Anda merasa lebih tertarik pada Lisp daripada C? Apakah Anda merasakan kekaguman yang luar biasa atas kontribusi zaman Perl yang membuat program perangkat lunak, tetapi hanya berharap bahwa itu bisa menjadi sedikit kurang samar dan jelek? Apakah Anda memikirkan kode seperti orang lain memikirkan puisi? Coba Ruby.

dan
sumber
11
"Dan itu terlalu buruk, karena pemrograman adalah perjalanan" ... Dan seperti perjalanan, itu akan bagus untuk satu malam, tetapi akhirnya kamu bangun di pagi hari dan melupakan apa yang telah kamu lakukan. Saya pikir metaprogramming terlalu ditekankan di Ruby, dan saya lebih suka Ruby ke Python. Sebagian besar solusi Ruby untuk masalah sintaksis adalah "Anda dapat mengatasinya dengan pemrograman meta"
Earlz
23
Apa? result = "world" if output=="hello" else "there"adalah Python yang benar-benar valid (dan tiga karakter lebih pendek).
Tim Pietzcker
3
@Tim OK, terima kasih sudah mengoreksi saya. Tapi bisakah Anda melakukan hal yang sama dengan pernyataan if / elsif / elsif / else - yaitu if / elif / elif / else dengan Python? Bisakah Anda melakukan hal yang sama bahkan jika ada beberapa pernyataan di dalam klausa if atau else?
dan
1
Tunggu, Python tidak memiliki operator ternary?
PP.
3
"Matz, pencipta Python, berasal dari latar belakang Lisp." tunggu ... AFAIK Matz adalah pencipta Ruby ...
Eimantas
6

Tergantung.

Bagi saya python jauh lebih mudah ditangkap daripada ruby, ditambah kedua bahasa memiliki tujuan yang berbeda.

Python lebih merupakan bahasa klasik dengan banyak hal mewah tingkat rendah, menjaganya tetap bersih dan mudah dibandingkan dengan C misalnya. Python tidak memiliki ambisi Ruby, yang bagi saya memiliki lebih banyak fitur tingkat tinggi.

Tidak ada salahnya Anda mempelajari Ruby, Anda akan menemukan hal-hal baru, tetapi berhati-hatilah daripada Python yang lebih dekat dengan paradigma pemrograman sederhana yang menjadikan kesuksesan C, dengan banyak pemacu produktivitas. Ruby lebih untuk orang-orang yang ingin melangkah lebih jauh dalam konsep pemrograman secara umum: Skema dan semua bahasa "superior" tersebut.

jokoon
sumber
3

Jawaban singkat: Ya dan ya.

Mempelajari bahasa baru hampir selalu bermanfaat, dan itu berlaku terutama untuk Ruby karena Rails masih sangat populer. Dan ya, mengetahui Python dengan baik akan membuatnya mudah untuk mengambil Ruby. Mereka memiliki beberapa perbedaan sintaksis dan konvensi yang berbeda dalam penamaan, tetapi ada banyak kesamaan juga.

Ini bukan investasi waktu yang besar, dan selalu bermanfaat untuk memiliki lebih banyak alat di kotak alat Anda, jadi lakukanlah!

(Saya telah menggunakan Python selama sekitar 10 tahun dan mengambil Ruby tahun lalu. Saat ini bekerja penuh waktu di proyek RoR)

shang
sumber
2

Semuanya memiliki ceruk. Misalnya Python (Django) adalah warga negara kelas satu di GoogleApp Engine, sementara itu bahasa atau pilihan untuk banyak proyek bioinformatika. Python memang memiliki banyak nilai pasar (saya mendapatkan sejumlah prospek pekerjaan yang tidak diminta hanya karena saya telah melakukan banyak hal dengan Python), tetapi begitu pula Ruby - di berbagai bidang. Seperti yang sudah pasti Anda dengar di sini berkali-kali, itu akan selalu membantu Anda mempelajari lebih banyak bahasa, jadi ya, pelajari Ruby. Apakah akan rumit? Ini akan jauh lebih mudah daripada belajar COBOL, karena bahasa dan kerangka kerja yang tersedia mirip satu sama lain. Salah satu contoh adalah permata Ruby dan pip python .

Ingatlah bahwa bahasa adalah alat dan setiap alat sebagai tujuan. Semakin banyak alat yang Anda tahu, semakin cepat, semakin mudah dan lebih benar Anda dapat membangun rumah pohon.

Arcege
sumber
Saya ingin menjawab dengan kalimat yang sama, semoga Anda tidak keberatan edit ...
Dimitrios Mistriotis
2

Haruskah saya belajar ruby? Iya.

Mempelajari bahasa baru selalu bernilai (terutama jika itu memberlakukan paradigma pemrograman yang berbeda dengan yang Anda tahu) dan kadang-kadang dapat membuat Anda lebih cakap bahkan ketika pemrograman dalam bahasa lain. Sebagai contoh saya mengambil sebagian besar pemrograman fungsional yang saya tahu dari Lisp dan saya menerapkannya ketika saya membutuhkannya untuk Python dan Ruby.

Apakah akan sulit? Jika Anda sudah belajar Python, Anda tentu bisa belajar Ruby juga.

Ini juga berguna jika sekarang Anda sedang mencari pekerjaan, itu menunjukkan bahwa Anda ingin tahu tentang teknologi dan bahwa Anda dapat mempelajari berbagai hal sendiri.

Ada perbandingan yang bagus antara Ruby dan Python di c2.com .

Trasplazio Garzuglio
sumber