Menemukan bahasa pemrograman baru untuk pengembangan web? [Tutup]

14

Saya bertanya-tanya apakah ada sumber daya yang kurang bias yang memberikan gambaran umum yang baik dan spesifik dari bahasa pemrograman dan tujuan yang dimaksudkan. Saya ingin belajar bahasa baru, tetapi mengunjungi situs dari setiap bahasa tidak berfungsi. Masing-masing berbicara tentang betapa hebatnya itu tanpa banyak menyebutkan kelemahan atau tujuan spesifiknya .

Ruby adalah bahasa pemrograman open source yang dinamis dengan fokus pada kesederhanaan dan produktivitas.

Python adalah bahasa pemrograman yang memungkinkan Anda bekerja lebih cepat dan mengintegrasikan sistem Anda lebih efektif.

Setelah menjadi pengembang PHP selama bertahun-tahun, Vic Cherubini merangkum kesulitan saya dengan baik:

Saya mengenal PHP dengan baik, memiliki kerangka kerja sendiri, dan dapat bekerja dengan cepat untuk menjalankan dan menjalankan sesuatu.

Saya diprogram seperti ini sepanjang revolusi MVC. Saya mendapat pekerjaan yang lebih baik dan lebih baik (baca: pembayaran yang lebih baik, judul yang lebih baik) sebagai pengembang PHP, tetapi sepanjang waktu menyadari bahwa kode yang saya tulis pada waktu saya sendiri sangat bagus, dan kode yang saya kerjakan di tempat kerja sangat buruk. Seperti, lebih buruk dari yang mengerikan. Mengerikan. Tingkat perdagangan OS buruk. Memiliki proyek sampingan membuat saya tetap waras, karena kode yang saya gunakan di tempat kerja membuat saya sengsara.

Inilah sebabnya saya pensiun dari PHP untuk proyek sampingan dan usaha pemrograman baru. Saya dihabiskan dengan PHP. Lelah, jika Anda mau. Saya telah mencapai tingkat di mana saya pikir saya berada di puncak dengan itu sebagai bahasa dan jika saya tidak pindah ke bahasa baru segera, saya akan selesai dengan pemrograman dan saya tidak ingin itu.

Bahasa yang saya lihat meliputi JavaScript (untuk node.js), Ruby, Python, & Erlang. Saya bahkan sudah memikirkan Scala atau C ++.

Masalahnya adalah mencari tahu mana yang dibangun untuk menangani kebutuhan saya yang terbaik.

Jadi ke mana saya bisa melewatkan hype dan mendapatkan informasi nyata tentang kematangan platform, ukuran komunitas, dan kekuatan & kelemahan bahasa itu. Jika saya tahu ini maka memilih bahasa untuk melanjutkan pengembangan web saya harus mudah.

Memperbarui

Saya hanya tidak ingin mendapatkan 4 bulan di jalan dengan beberapa bahasa dan merasa itu menyebalkan karena setiap utas memiliki 4MB overhead, atau koneksi konkuren maksimum adalah 999, tidak ada paket untuk melakukan fitur "X", atau dukungan adalah sedang dihapus untuk cabang bahasa baru.

Xeoncross
sumber
14
Sulit untuk mengatakan mana yang akan menangani kebutuhan Anda jika Anda tidak menentukan kebutuhan ini.
vartec
3
Itulah sebabnya saya tidak mendefinisikan kebutuhan saya - Kebutuhan pribadi saya tidak penting . Saya ingin tahu di mana saya bisa mencocokkan kebutuhan saya dengan bahasa pemrograman tertentu. Karena kebutuhan saya dapat berubah dan saya harus kembali lagi.
Xeoncross
Perlu ditunjukkan bahwa ada lebih banyak program daripada kecepatan eksekusi . Kecepatan pengembangan dan cara Anda harus membangun aplikasi Anda (karena bahasa) memainkan peran penting.
Xeoncross
4
ini kurang tentang bahasa dan lebih banyak tentang kematangan dan kekayaan fitur kerangka kerja yang tersedia untuk mereka.
1
Saya sarankan Anda melihat posting yang sangat baik ini oleh Alex Martelli.
phant0m

Jawaban:

3

Saya tidak akan memposting ini sebagai jawaban, tetapi Xeoncross memintaku, jadi di sini kita mulai:

(Sidenote: jika seseorang dapat memperbaiki masalah penurunan harga dalam contoh kode kecil, saya akan menghargainya.)

Diposting oleh Alex Martelli di comp.lang.python : Apa yang lebih baik tentang Ruby daripada Python? pada 18 Agustus 2003, 17:50

Erik Max Francis menulis:

"Brandon J. Van Every" menulis:

Apa yang lebih baik tentang Ruby daripada Python? Saya yakin ada sesuatu. Apa itu? Bukankah lebih masuk akal untuk bertanya pada orang Ruby ini, daripada orang Python?

Mungkin, atau mungkin tidak, tergantung pada tujuan seseorang - misalnya, jika tujuan seseorang termasuk "studi sosiologis" dari komunitas Python, maka mengajukan pertanyaan kepada komunitas itu kemungkinan akan membuktikan lebih banyak mengungkapkan informasi tentang hal itu, daripada menempatkannya di tempat lain :-). Secara pribadi, saya dengan senang hati mengambil kesempatan untuk mengikuti tutorial Ruby satu hari Dave Thomas di OSCON terakhir. Di bawah lapisan tipis perbedaan sintaks, saya menemukan Ruby dan Python sangat mirip - jika saya menghitung pohon rentang minimum di antara sembarang bahasa, saya cukup yakin Python dan Ruby akan menjadi dua daun pertama yang bergabung menjadi simpul perantara :-).

Tentu, saya mendapatkan lelah, di Ruby, mengetik konyol "akhir" pada akhir setiap blok (bukan hanya unindenting) - tapi kemudian saya mendapatkan untuk menghindari mengetik sama-konyol : yang Python membutuhkan pada awal dari setiap blok, jadi itu hampir mencuci :-). Perbedaan sintaksis lainnya seperti @fooversus self.foo, atau signifikansi case yang lebih tinggi dalam Ruby vs Python, benar-benar sama tidak relevannya bagi saya.

Yang lain tidak diragukan lagi mendasarkan pilihan mereka pada bahasa pemrograman hanya pada masalah seperti itu, dan mereka menghasilkan perdebatan terpanas - tetapi bagi saya itu hanya contoh dari salah satu Hukum Parkinson dalam tindakan (jumlah pada debat tentang suatu masalah berbanding terbalik dengan masalah tersebut. kepentingan aktual). Satu perbedaan sintaks yang saya anggap penting, dan mendukung Python - tetapi orang lain pasti akan berpikir sebaliknya - adalah "bagaimana Anda memanggil fungsi yang tidak memerlukan parameter". Dalam Python (seperti dalam C), untuk memanggil fungsi Anda selalu menerapkan "operator panggilan" - membuntuti tanda kurung tepat setelah objek yang Anda panggil (di dalam tanda kurung trailing pergi argumen yang Anda sampaikan dalam panggilan - jika Anda tidak memberikan argumen, maka tanda kurung kosong). Ini meninggalkan hanya penyebutan objek apa pun, tanpa melibatkan operator, sebagai makna hanya referensi ke objek - dalam konteks apa pun, tanpa kasus khusus, pengecualian, aturan ad-hoc, dan sejenisnya. Di Ruby (seperti dalam Pascal), untuk memanggil fungsi DENGAN argumen, Anda meneruskan argumen (biasanya dalam tanda kurung, meskipun tidak selalu demikian) - TETAPI jika fungsi tersebut tidak menggunakan argumen, cukup sebutkan fungsi yang secara implisit memanggilnya. Ini mungkin memenuhi harapan banyak orang (setidaknya, tidak diragukan lagi, mereka yang hanya memiliki pengalaman pemrograman sebelumnya dengan Pascal, atau bahasa lain dengan "panggilan implisit" yang serupa, seperti Visual Basic) - tetapi bagi saya, itu berarti hanya menyebutkan suatu objek dapat BAIK berarti referensi ke objek, ATAU panggilan ke objek, tergantung pada jenis objek - dan dalam kasus-kasus di mana saya tidak bisa mendapatkan referensi ke objek hanya dengan menyebutkannya saya akan perlu menggunakan eksplisit "beri saya referensi untuk ini, JANGAN menyebutnya!" operator yang tidak diperlukan sebaliknya. Saya merasa ini berdampak pada "kelas-pertama" fungsi (atau metode, atau objek yang dapat dipanggil lainnya) dan kemungkinan menukar objek dengan lancar. Oleh karena itu, bagi saya, perbedaan sintaksis khusus ini adalah tanda hitam yang serius terhadap Ruby - tetapi saya mengerti mengapa orang lain melakukan hal sebaliknya, walaupun saya hampir tidak bisa berselisih lebih keras dengan mereka :-). Di bawah sintaks, kita masuk ke beberapa perbedaan penting dalam semantik dasar - misalnya, string dalam Ruby adalah objek yang bisa berubah-ubah (seperti di C ++), sementara di Python mereka tidak bisa berubah (seperti di Jawa, atau saya percaya C #). Sekali lagi, orang-orang yang menilai berdasarkan apa yang sudah mereka kenal mungkin berpikir ini adalah nilai tambah untuk Ruby (kecuali mereka akrab dengan Java atau C #, tentu saja :-). Saya, saya pikir string tidak dapat diubah adalah ide yang bagus (dan saya tidak terkejut bahwa Java, secara independen saya pikir, menemukan kembali ide yang sudah di Python), meskipun saya tidak akan keberatan memiliki tipe "buffer string yang dapat diubah" juga. (dan idealnya dengan kemudahan penggunaan yang lebih baik daripada "string buffer" Java sendiri); dan saya tidak memberikan penilaian ini karena terbiasa - sebelum mempelajari Java, selain dari bahasa pemrograman fungsional di mana orang-orang yang menilai berdasarkan apa yang sudah mereka kenal mungkin berpikir ini adalah nilai tambah untuk Ruby (kecuali mereka akrab dengan Java atau C #, tentu saja :-). Saya, saya pikir string tidak dapat diubah adalah ide yang bagus (dan saya tidak terkejut bahwa Java, secara independen saya pikir, menemukan kembali ide yang sudah di Python), meskipun saya tidak akan keberatan memiliki tipe "buffer string yang dapat diubah" juga. (dan idealnya dengan kemudahan penggunaan yang lebih baik daripada "string buffer" Java sendiri); dan saya tidak memberikan penilaian ini karena terbiasa - sebelum mempelajari Java, selain dari bahasa pemrograman fungsional di mana orang-orang yang menilai berdasarkan apa yang sudah mereka kenal mungkin berpikir ini adalah nilai tambah untuk Ruby (kecuali mereka akrab dengan Java atau C #, tentu saja :-). Saya, saya pikir string tidak dapat diubah adalah ide yang bagus (dan saya tidak terkejut bahwa Java, secara independen saya pikir, menemukan kembali ide yang sudah di Python), meskipun saya tidak akan keberatan memiliki tipe "buffer string yang dapat diubah" juga. (dan idealnya dengan kemudahan penggunaan yang lebih baik daripada "string buffer" Java sendiri); dan saya tidak memberikan penilaian ini karena terbiasa - sebelum mempelajari Java, selain dari bahasa pemrograman fungsional di mana Saya pikir string yang tidak dapat diubah adalah ide yang bagus (dan saya tidak terkejut bahwa Java, secara independen saya pikir, menemukan kembali ide yang sudah ada di Python), meskipun saya tidak akan keberatan memiliki tipe "buffer string yang dapat diubah" juga (dan idealnya dengan kemudahan penggunaan yang lebih baik daripada "string buffer" Java sendiri); dan saya tidak memberikan penilaian ini karena terbiasa - sebelum mempelajari Java, selain dari bahasa pemrograman fungsional di mana Saya pikir string tidak dapat diubah adalah ide yang bagus (dan saya tidak terkejut bahwa Java, secara independen saya pikir, menemukan kembali ide yang sudah di Python), meskipun saya tidak akan keberatan memiliki tipe "buffer string yang dapat diubah" juga (dan idealnya dengan kemudahan penggunaan yang lebih baik daripada "string buffer" Java sendiri); dan saya tidak memberikan penilaian ini karena terbiasa - sebelum mempelajari Java, selain dari bahasa pemrograman fungsional di manasemua data tidak dapat diubah, semua bahasa yang saya tahu memiliki string yang dapat berubah - namun ketika saya pertama kali melihat ide string yang tidak dapat diubah di Jawa (yang saya pelajari dengan baik sebelum saya belajar Python), itu langsung mengejutkan saya sebagai sangat baik, sangat cocok untuk referensi-semantik dari bahasa pemrograman tingkat yang lebih tinggi (sebagai lawan dari nilai-semantik yang paling cocok dengan bahasa yang lebih dekat ke mesin dan lebih jauh dari aplikasi, seperti C) dengan string sebagai kelas, built-in (dan cantik) penting) tipe data.

Ruby memang memiliki beberapa keunggulan dalam semantik dasar - misalnya, penghapusan "daftar vs tupel" Python yang membedakannya sangat halus. Tetapi sebagian besar nilainya (seperti yang saya simpan, dengan kesederhanaan nilai tambah yang besar dan halus, pandai minus yang penting) bertentangan dengan Ruby (misalnya, memiliki interval tertutup dan setengah terbuka, dengan notasi a..b dan .. .b [ada yang mau mengklaim bahwa itu jelas yang mana? -)], konyol - IMHO, tentu saja!). Sekali lagi, orang-orang yang menganggap memiliki banyak hal yang mirip tetapi agak berbeda pada inti suatu bahasa PLUS, daripada MINUS, tentu saja akan menghitung "sebaliknya" dari cara saya menghitungnya :-).

Jangan disesatkan oleh perbandingan ini dengan berpikir bahwa kedua bahasa itu sangatberbeda, ingatlah kamu. Mereka bukan. Tetapi jika saya diminta untuk membandingkan "capelli d'angelo" dengan "spaghettini", setelah menunjukkan bahwa kedua jenis pasta ini hampir tidak dapat dibedakan dengan siapa pun dan dapat dipertukarkan dalam hidangan apa pun yang mungkin ingin Anda siapkan, maka saya pasti akan memiliki untuk pindah ke pemeriksaan mikroskopis tentang bagaimana panjang dan diameter berbeda secara kasat mata, bagaimana ujung-ujung untaian meruncing dalam satu kasus dan tidak dalam yang lain, dan seterusnya - untuk mencoba dan menjelaskan mengapa saya, secara pribadi, lebih suka memiliki capelli. 'angelo sebagai pasta dalam segala jenis kaldu, tetapi akan lebih suka spaghettini daripada pastasciutta dengan saus yang cocok untuk bentuk pasta tipis yang panjang (minyak zaitun, bawang putih cincang, paprika merah cincang, dan ikan teri yang digiling halus, misalnya - tetapi jika Anda mengiris bawang putih dan paprika alih-alih mencincangnya, maka Anda harus memilih tubuh spageti yang lebih sehat daripada spaghettini yang lebih tipis, dan disarankan untuk tidak lagi menggunakan acoview dan menambahkan basil musim semi segar [ atau bahkan - Saya seorang bidat ...! - cahaya mint ...] pergi - pada saat terakhir sebelum menyajikan hidangan). Ooops, maaf, ini menunjukkan bahwa saya bepergian ke luar negeri dan belum memiliki pasta untuk sementara waktu, saya kira. Tapi analoginya masih cukup bagus! -) dan akan sangat disarankan untuk melepaskan achoview dan menambahkan beberapa basil musim semi segar [atau bahkan - saya seorang bidat ...! - cahaya mint ...] pergi - pada saat terakhir sebelum menyajikan hidangan). Ooops, maaf, ini menunjukkan bahwa saya bepergian ke luar negeri dan belum memiliki pasta untuk sementara waktu, saya kira. Tapi analoginya masih cukup bagus! -) dan akan sangat disarankan untuk melepaskan achoview dan menambahkan beberapa basil musim semi segar [atau bahkan - saya seorang bidat ...! - cahaya mint ...] pergi - pada saat terakhir sebelum menyajikan hidangan). Ooops, maaf, ini menunjukkan bahwa saya bepergian ke luar negeri dan belum memiliki pasta untuk sementara waktu, saya kira. Tapi analoginya masih cukup bagus! -)

Jadi, kembali ke Python dan Ruby, kita sampai pada dua biggies (dalam hal bahasa yang tepat - meninggalkan perpustakaan, dan pendukung penting lainnya seperti alat dan lingkungan, cara menyematkan / memperluas setiap bahasa, dll, dll, dari untuk saat ini - mereka tidak akan berlaku untuk semua IMPLEMENTASI dari setiap bahasa, misalnya, Jython vs Classic Python menjadi dua implementasi dari bahasa Python!):

  1. Iterator dan codeblock Ruby vs iterator dan generator Python;

  2. TOTAL Ruby, "dinamisitas" yang tak terkendali, termasuk kemampuan untuk "membuka kembali" setiap kelas yang ada, termasuk semua kelas bawaan, dan mengubah perilakunya pada saat run-time - vs dinamisitas Python yang luas tetapi     terbatas , yang tidak pernah mengubah perilaku yang ada kelas bawaan dan instance mereka.

Secara pribadi, saya menganggap 1 pembasuhan (perbedaannya sangat dalam sehingga saya dapat dengan mudah melihat orang-orang membenci salah satu pendekatan dan menghormati yang lain, tetapi pada skala pribadi SAYA nilai plus dan minusnya hampir merata); dan [2] masalah penting - yang membuat Ruby jauh lebih cocok untuk "bermain-main", TETAPI Python lebih cocok untuk digunakan dalam aplikasi produksi besar. Dalam hal ini lucu, karena kedua bahasa jauh JAUH lebih dinamis daripada kebanyakan bahasa lainnya, bahwa pada akhirnya perbedaan utama antara mereka dari POV saya harus bergantung pada itu - bahwa Ruby "pergi ke sebelas" dalam hal ini (referensi di sini adalah "Tap Spinal", tentu saja). Di Ruby,AKU BISA MELAKUKANNYA ! Yaitu, saya dapat secara dinamis mengubah kelas string bawaan

a = "Hello World" 
b = "halo dunia" 
jika a == b 
    cetak "sama! \ n" 
lain 
    cetak "berbeda! \ n" 
akhir
 

AKAN mencetak "sama". Dengan python, TIDAK ada cara saya bisa melakukan itu. Untuk keperluan metaprogramming, mengimplementasikan framework eksperimental, dan sejenisnya, kemampuan dinamis Ruby yang menakjubkan ini sangat luar biasa menarik. TETAPI - jika kita berbicara tentang aplikasi besar, dikembangkan oleh banyak orang dan dikelola oleh lebih banyak lagi, termasuk semua jenis perpustakaan dari berbagai sumber, dan perlu untuk masuk ke produksi di situs klien ... well, saya tidak MAU bahasa yang SANGAT dinamis, terima kasih banyak. Saya benci gagasan beberapa perpustakaan tanpa disadari melanggar yang tidak terkait lainnya yang bergantung pada string yang berbeda - itu adalah jenis "saluran" yang dalam dan sangat tersembunyi, antara potongan-potongan kode yang TERLIHAT terpisah dan HARUS terpisah, yang menandakan kematian dalam pemrograman skala besar. Dengan membiarkan modul apa pun memengaruhi perilaku "diam-diam" lainnya,

Jika saya harus menggunakan Ruby untuk aplikasi sebesar itu, saya akan mencoba untuk mengandalkan pembatasan gaya pengkodean, banyak tes (untuk dijalankan kembali setiap kali perubahan APA SAJA - bahkan apa yang seharusnya sama sekali tidak berhubungan ...), dan sejenisnya, untuk melarang penggunaan fitur bahasa ini. Tapi BUKAN memiliki fitur di tempat pertama bahkan lebih baik, menurut saya - sama seperti Python itu sendiri akan menjadi bahasa yang lebih baik untuk pemrograman aplikasi jika sejumlah built-in dapat "dipatahkan", jadi saya TAHU itu , misalnya, len("ciao")adalah 4 (daripada harus khawatir secara subliminal tentang apakah seseorang mengubah pengikatan nama lendalam __builtins__ modul ...). Saya berharap bahwa akhirnya Python "memakukan" bawaannya.

Tapi masalahnya kecil, karena memberontak built-in cukup usang dan juga merupakan praktik yang jarang terjadi di Python. Di Ruby, itu menurut saya penting - seperti fasilitas makro terlalu kuat dari bahasa lain (seperti, katakanlah, Dylan) menghadirkan risiko serupa menurut pendapat saya sendiri (saya berharap bahwa Python tidak pernah mendapatkan sistem makro yang begitu kuat, tidak ada peduli daya pikat "membiarkan orang menentukan sendiri bahasa kecil khusus domain mereka yang tertanam dalam bahasa itu sendiri" - itu akan, IMHO, merusak kegunaan luar biasa Python untuk pemrograman aplikasi, dengan menghadirkan "gangguan yang menarik" kepada calon penjahat yang bersembunyi di hati setiap programmer ...).

Alex

hantu0m
sumber
Saya memberikan ini sebagai jawaban karena itu adalah ikhtisar besar yang relatif tidak bias dari Ruby dan Python secara keseluruhan. Menjelaskan cara kerja bahasa dan tidak berfungsi .
Xeoncross
27

Semoga berhasil

Tak satu pun dari contoh deskripsi yang diberikan yang objektif atau dapat diuji. Mereka semua hype dan opini.

... kesederhanaan dan produktivitas ... lebih cepat ... lebih efektif.

Cobalah

Ambil contoh proyek kecil dari jenis yang mungkin Anda lakukan, dan cobalah dengan semua bahasa yang menarik bagi Anda. Lalu poskan ulasan objektif Anda, dan kita semua akan tahu.

Steven A. Lowe
sumber
2
Bukan ide yang buruk, namun itu tidak akan berhasil di dunia nyata. Tanpa menghabiskan waktu untuk sepenuhnya memahami setiap bahasa - saya tidak pernah dapat melihat masalah pola desain penuh dan manfaat yang dapat diberikan oleh setiap sistem. Saya yakin akan butuh berbulan-bulan bekerja di setiap bahasa untuk mencapai pemahaman tingkat tinggi bahasa itu sendiri. Saya lebih suka mendengar dari para ahli ban daripada menghabiskan waktu berbulan-bulan deengineering setiap roda untuk mencari tahu mengapa mereka membangunnya seperti itu. Namun, setelah saya memiliki beberapa kandidat yang baik saya pasti akan melakukan ini.
Xeoncross
1
@Xeoncross: dengan setiap bahasa yang Anda coba, Anda akan meningkatkan pengalaman Anda, dan Anda akan dapat memanfaatkannya dalam bahasa lain. 4 bulan untuk menyelam ke dalam bahasa tidak pernah hilang; dan jika bahasanya benar-benar omong kosong, Anda perlu kurang dari dua minggu untuk mengetahuinya.
tdammers
Itu benar, hanya perlu beberapa minggu untuk membangun sesuatu dan saya akan mendapat manfaat dari pengalaman karena bahasa umumnya mengikuti bahasa lain.
Xeoncross
3
Ya, Anda mungkin harus mencoba semua bahasa ini untuk menemukan yang cocok. Tetapi masalahnya adalah bahwa ketika Anda menggunakan bahasa baru Anda tidak menggunakannya dengan cara yang seharusnya Anda lakukan pada awalnya. Anda akhirnya melakukan hal yang sama yang Anda lakukan dengan bahasa yang Anda sudah tahu bagaimana menggunakannya hanya dengan sintaks yang berbeda. Butuh sedikit waktu untuk mencari tahu poin lebih baik dari masing-masing bahasa dan apa manfaatnya sebenarnya.
radix07
3
Saya akan terkejut jika ada perbedaan yang signifikan antara bahasa modern untuk tujuan umum. Di sana, saya mengatakannya dengan lantang. Dan dalam huruf miring . Biarkan nyala dimulai!
Steven A. Lowe
8

Saya pikir bagian dari masalahnya adalah bahwa siapa pun yang cukup tahu untuk berkomentar secara berarti tentang satu atau lebih bahasa akan memiliki bias. Dalam hampir 4 dekade pemrograman saya telah bekerja dalam lebih banyak bahasa daripada yang bisa saya hitung. Saya dapat memberi Anda pendapat (beberapa dari mereka berkencan) tentang beberapa bahasa tersebut, tetapi tidak satu pun dari pendapat itu yang tidak bias.

Saya mengambil pendekatan menggunakan bahasa yang tepat untuk pekerjaan itu. Anda secara khusus bertanya tentang pengembangan web , tapi itu masih kategori yang cukup luas - seperti mengatakan Anda tertarik pada fotografi. Mikro? Astro? dll. Meskipun saya setuju bahwa PHP bukan bahasa yang memenuhi emosi untuk bekerja, bagi banyak pelanggan itu bahasa yang tepat berdasarkan sejumlah faktor, tidak sedikit di antaranya adalah kemampuan jangka panjang untuk menemukan programmer untuk memperbaiki situs setelah Anda pergi dan / atau tertabrak bus.

Jadi mungkin Anda harus melihat tipe-tipe pelanggan yang tertarik pada proyek yang cocok untuk sesuatu yang berbeda, dan kemudian berusaha membuat diri Anda menarik bagi mereka.

Peter Rowell
sumber
Yah, karena saya sangat bagus di PHP - saya akan terus bekerja di dalamnya karena saya masih bisa mencari nafkah yang baik. Saya kebanyakan berpikir tentang bahasa baru untuk proyek saya sendiri . Sesuatu untuk membantu menambah rasa kembali ke hidup saya. Saya bekerja di hampir setiap pengembangan web yang dapat Anda pikirkan, NLP, parsing teks, CMS, API, penyimpanan, dll. Juga, seseorang dengan pengalaman dalam banyak bahasa memiliki bias yang jauh lebih sedikit daripada orang dengan hanya satu proses desain.
Xeoncross
Ah. Maka saya akan memberikan jawaban standar saya untuk "jenis bahasa" terbaik -jenis pertanyaan: Python. Mengabaikan "spasi putih yang signifikan" (yang dimungkinkan untuk dilakukan), itu dekat dengan bahasa yang sempurna bagi saya. Selain itu, ada banyak sekali perpustakaan berkualitas sangat tinggi di luar sana dengan API Python. Misalnya NLTK, Perangkat Bahasa Alami ( nltk.org ).
Peter Rowell
Ah, tapi apa tentang Python yang membuatnya lebih baik? Sebagian besar bahasa memiliki perangkat yang sama - desain bahasa yang memperkenalkan hal-hal seperti threading, konkurensi, persyaratan VM, kompilasi / interpretasi, kegigihan, dll.
Xeoncross
Python benar-benar menyenangkan untuk diprogram. Itulah yang membuatnya "lebih baik" bagi saya. Cukup sederhana sehingga Anda tidak perlu membunyikan IDE besar hanya untuk kode di dalamnya. Tetapi juga memiliki banyak fitur menarik seperti objek, kemampuan pemrograman fungsional, banyak perpustakaan / kerangka / alat yang ada dan komunitas yang berkembang dan antusias dengan banyak dokumentasi terbuka / gratis untuk membuat Anda maju.
John Gaines Jr
2
Benar. Penjelasan paling sederhana adalah bahwa Python bekerja seperti otak saya dan itu hanya membuat saya lebih produktif; Saya hampir tidak pernah menemukan diri saya bertanya, "Sekarang bagaimana saya melakukan ini dengan Python?" Meskipun GIL (Global Interpreter Lock) sedikit masalah, itu tidak cenderung banyak mempengaruhi saya karena saya lebih sering berurusan dengan situasi multiproses (terutama multi-stage NL pipeline processing processing) daripada multitask . Saya juga suka berbagai opsi antarmuka untuk mengakses perpustakaan eksternal baru: ctypes, Boost, dll.
Peter Rowell
7

Python

Tujuan paling universal dan umum dari semuanya, tetapi juga dalam hal pemrograman web menyediakan pilihan produk yang lebih luas. Memiliki antarmuka WSGI terstandarisasi menjamin interoperabilitas yang sangat baik antara kerangka dan server. Beberapa produk web Python yang terkenal:

  • Django - kerangka kerja tingkat tinggi yang matang dan matang dengan ORM tingkat lanjut, sistem templating, penanganan formulir, dll.
  • Twisted - framework untuk pemrograman jaringan event-driven (asynchronous), dapat digunakan untuk obrolan, server soket, layanan web, apa saja.
  • Tornado - juga kerangka kerja yang digerakkan oleh peristiwa, tetapi yang ini dirancang untuk layanan web asinkron.

Rubi

Ruby juga merupakan bahasa yang cukup universal. Namun sejauh ini produk yang paling terkenal adalah Ruby on Rails. Desainnya telah menjadi inspirasi bagi banyak orang (termasuk Django yang disebutkan di atas).

JavaScript

Saat ini satu-satunya pilihan sisi server untuk JS adalah node.js. Ini sangat mirip dengan Tornado dan Twisted (yang terinspirasi). Namun, masih kekurangan kerangka kerja yang lengkap seperti Django atau RoR yang dibangun di atasnya.

Scala

Menjadi bahasa fungsional itu bagus untuk komputasi paralel masif, sejauh pemrograman web tujuan umum ada Lift - kerangka kerja web yang terinspirasi oleh RoR, digunakan misalnya oleh FourSquare.

vartec
sumber
Perlu ditunjukkan bahwa hal-hal seperti respons yang tidak menghalangi, penggunaan memori, konkurensi, dan faktor-faktor lain sangat besar di pasar untuk bahasa baru yang akan memberi daya pada aplikasi web.
Xeoncross
+1 untuk Django. Itu mengejutkan saya ketika saya mempelajarinya ... itu, atau saya dalam keadaan pingsan karena saya mempelajarinya dan Python secara bersamaan. Apa pun itu, teknologi hebat yang ingin saya kunjungi kembali sebagai "waktu luang" saya yang selalu sulit dipahami.
zourtney
1
"... masih kekurangan kerangka kerja yang lengkap" Periksa Express untuk Node - expressjs.com
T. Stone
@ T: yeah, saya sudah melihat Express. Salah satu poin kuat Django dan RoR adalah ORM. Express sepertinya tidak memilikinya.
vartec
3

Dalam proyek web terbaru saya, saya mulai dengan PHP karena saya telah menggunakannya untuk proyek web sebelumnya (mulai cepat), tetapi saya memiliki banyak masalah dengan bahasa misalnya dukungan UTF-8 yang buruk dan pengetikan dinamis. Saya juga memiliki beberapa latar belakang Java dan saya sangat menikmati pengetikan statis dan alat refactoring yang baik. Java juga memiliki kinerja yang baik dibandingkan dengan PHP. Tapi saya juga suka ekspresi pemrograman fungsional.

Kerangka Kerja Scala dan Mainkan

Dengan pengalaman di atas, saya sangat menikmati bahasa pemrograman Scala, diketik secara statis, memiliki dukungan untuk pemrograman berorientasi objek dan fungsional dan memiliki kinerja yang baik dibandingkan dengan bahasa lain yang digunakan untuk pengembangan web. Tapi saya tidak suka kerangka kerja web untuk Java dan servlets, dan saya menemukan Play Framework yang memiliki dukungan untuk Scala dan Java dan memiliki siklus pengembangan yang sangat cepat - simpan file dan perbarui halaman web Anda. Saya sangat puas dengan Kerangka Kerja Scala & Play bulan lalu. Tapi dukungan Scala di Play Framework belum terlalu matang, dan tidak juga dukungan tooling.

Singkatnya saya merekomendasikan Scala sebagai bahasa pemrograman dan Play Framework sebagai kerangka kerja web.

Jonas
sumber
Bermain terlihat keren, belum memiliki kesempatan untuk benar-benar ( benar-benar ) mencobanya. Berasal dari latar belakang php yang serupa, saya menemukan Lift cukup mudah untuk dipahami. Tampaknya juga sedikit lebih dewasa daripada Play, tapi aku terlalu baru untuk Scala, untuk meyakinkan.
yannis
3

Sebenarnya, Anda mungkin melihat tiga jenis sumber daya:

  • Yang menjelaskan dasar-dasar bahasa dan mengapa Anda ingin menggunakannya,
  • Yang membandingkan beberapa bahasa.
  • Yang mengkritik beberapa aspek bahasa.

Kedua sumber daya itu akan menjadi bias.

  • Ketika Anda menjelaskan sesuatu tentang suatu bahasa, Anda mencoba sebagian besar waktu untuk meyakinkan pembaca untuk menggunakannya. Jadi, Anda jarang mengatakan bahwa bahasa itu menyebalkan.
  • Ketika Anda membandingkan beberapa bahasa, Anda selalu memiliki preferensi pribadi untuk salah satu dari mereka.
  • Ketika Anda mengkritik sesuatu, yah, hampir tidak mungkin untuk bersikap netral.

Anda mungkin memiliki peluang untuk menemukan perbandingan netral, tetapi sangat sulit untuk menulisnya. Secara pribadi, saya tidak akan pernah bisa menulis perbandingan antara bahasa nyata dan PHP tanpa mengkritik PHP sepanjang waktu. Dan saya cukup yakin saya tidak sendirian karena tidak bisa bersikap netral.


Jika Anda ingin memiliki tinjauan umum berbagai bahasa, Anda harus mempelajarinya sendiri , dan banyak membaca . Dengan belajar, maksud saya mengetahui dasar-dasar bahasa, tetapi bisa memiliki pendapat Anda sendiri . Itu bukan karena Anda telah membaca manual Ruby daripada Anda dapat menjelaskan apa yang baik dan apa yang buruk dalam bahasa ini.

Ini berarti Anda harus menghabiskan waktu (berbulan-bulan, atau bahkan bertahun-tahun) untuk berlatih. Atau, Anda bisa membaca banyak. Tetapi cobalah membaca hal-hal yang bertentangan . Jika seseorang menulis bahwa ia membenci PHP dan PHP adalah salah satu bahasa terburuk yang pernah ada, terutama dibandingkan dengan bahasa asli seperti Ruby, C # atau Java, cobalah juga untuk menemukan seseorang yang mengatakan bahwa PHP itu hebat, dan itu lebih mudah digunakan daripada C #, jauh lebih cepat daripada Java, dan banyak ... (Saya benar-benar tidak tahu apa) daripada Ruby.

Ingat satu hal: jika Anda sudah tahu bahasa dengan baik, Anda akan sangat mengkritik di awal ketika belajar bahasa lain , percaya bahwa bahasa yang sudah Anda kenal lebih baik dan lebih mudah digunakan. Ini seperti pengguna Linux yang membenci Windows, dan pengguna Windows yang membenci Linux: pada kenyataannya, tidak ada OS yang lebih baik; hanya saja pengguna Linux tidak tahu cara menggunakan Windows, dan sebaliknya. Hanya setelah Anda memperoleh pengalaman yang cukup di keduanya maka Anda akan dapat memutuskan dengan benar mana yang lebih baik untuk Anda.


Hal terakhir, yang sering dilupakan: juga sangat penting untuk dapat mengevaluasi "lingkungan" suatu bahasa:

  • Seberapa baik kerangka kerja (atau kerangka kerja yang paling banyak digunakan)?
  • Apakah mudah menemukan layanan hosting? Apakah Anda menghargai IDE?
  • Apakah ada banyak perpustakaan pihak ketiga yang ditulis dengan baik?
  • Apakah komunitas terdiri dari pengembang yang sangat profesional, atau kebanyakan oleh pemula yang tidak tahu apa-apa tentang pemrograman pada umumnya, atau tentang bahasa itu sendiri?
  • Apakah dokumentasinya cukup jelas dan mudah dicari dan dimengerti?
  • Apakah bahasa dan kerangka kerja sering diperbarui?
  • dll.
Arseni Mourzenko
sumber
Saya sangat setuju. Ini pertanyaan-pertanyaan yang saya cari jawabannya. Anda menyebutkan banyak membaca - dan itulah yang saya coba lakukan - saya butuh banyak sumber daya untuk membaca tentang bahasa yang ingin saya bahas. Meskipun tidak mungkin untuk memiliki ulasan yang tidak bias, beberapa bahkan jauh lebih seimbang dan hanya itu yang saya inginkan.
Xeoncross
2

Ya, karena salah satu kriteria Anda sepertinya "menyenangkan untuk dikerjakan", saya pikir Anda ingin mencari info yang bias. Jika penulis sesuatu bersemangat tentang bahasa pilihan mereka, ada peluang yang cukup bagus mereka akan memberikan penilaian yang bias.

Mungkin Anda harus mendekatinya dari arah lain. Karena Anda terdengar seperti Anda sedang berbicara tentang membuat karier keluar dari itu daripada hobi, mungkin Anda harus mensurvei beberapa iklan pekerjaan, menemukan beberapa teknologi / bahasa yang menarik dan melihat ke dalamnya.

Adapun bahasa memiliki tujuan khusus, banyak bahasa tidak memilikinya. Sebagian besar bahasa yang Anda daftarkan cukup umum. Misalnya, bahasa Ruby adalah bahasa tujuan yang cukup umum yang cocok untuk banyak tugas. Setelah Anda menambahkan kerangka kerja ke dalamnya, seperti Rails , itu memang memiliki tujuan yang cukup spesifik.

John Gaines Jr.
sumber
1

Ini bukan apa yang Anda minta, tetapi jika saya sedang mencari sesuatu untuk mengeluarkan saya dari kebiasaan profesional pengembangan web, sementara masih memanfaatkan pengalaman dan kontak itu, saya akan menulis aplikasi Android dan iPhone. Mampu menjual aplikasi yang melengkapi situs web klien dapat benar-benar membuat Anda menonjol dalam mengembangkan internet yang semakin diakses melalui perangkat seluler.

Karl Bielefeldt
sumber
Itu benar-benar bukan ide yang buruk. Saya juga berpikir untuk menghabiskan lebih banyak waktu di ilustrator dan Photoshop mengerjakan desain saya. Namun, saya ingin mengetahui lebih lanjut tentang opsi aplikasi web di luar sana.
Xeoncross
0

Apakah Anda benar-benar mencapai batas PHP, atau hanya batas PHP seperti yang Anda tahu?

Sudahkah Anda melihat ke Drupal ? Ini adalah CMS berbasis PHP dan kerangka kerja pemrograman yang sangat mendorong standar dan praktik pengkodean yang baik. (Setelah harus bekerja dengan OSCommerce di pekerjaan sebelumnya, saya merasakan penderitaan Anda di sana.) Meskipun berbasis PHP, cukup berbeda bahwa sering kali cara "benar" untuk melakukan sesuatu dalam PHP murni bukanlah cara yang tepat untuk melakukannya di Drupal, dan Anda akan memiliki kurva belajar yang baik untuk naik untuk benar-benar menguasainya. Namun, ini dapat mengubah perspektif Anda tentang kemampuan PHP sebagai bahasa dan pengembangan web secara keseluruhan.

Garrett Albright
sumber
Terakhir kali saya melihat Drupal (4 & 5) agak buruk. Mungkin versi terbaru mereka menggunakan standar yang tepat sekarang. Namun, selambat itu saya lebih suka tetap dengan kerangka luar biasa di luar sana.
Xeoncross