Memilih antara CL dan Python untuk pengembangan web

13

Saya berasal dari latar belakang Jawa dan setelah saya membaca esai kecil ini oleh Paul Graham, saya mulai bertanya-tanya tentang mengambil bahasa baru yaitu Common Lisp untuk mempercepat pekerjaan saya (saya seorang pengembang web).

Saya sedang menulis proyek hewan peliharaan saat ini tetapi saya memiliki beberapa rencana bisnis untuk masa depan. Paul berbicara tentang LISP dalam esainya sebagai "senjata rahasia". Saya tidak tahu apakah pernyataan ini benar setelah 10 tahun tetapi saya mencelupkan jari kaki saya ke dalam tutorial CL yang bagus dan sepertinya LISP mungkin lebih unggul untuk pengembangan web.

Paul juga menyebutkan Python sebagai pilihan bagus yang sebenarnya saya kenal. Pertanyaan saya adalah: mana yang harus saya pilih untuk proyek web masa depan saya?

Apa yang saya pikirkan:

  • Saya tidak akan mengembangkan aplikasi desktop sehingga saya dapat memilih bahasa apa pun yang saya suka.
  • python tampaknya memiliki komunitas yang sangat besar sehingga lebih banyak perpustakaan / kerangka kerja dibandingkan dengan lisp
  • Saya menemukan bahwa lisp memiliki beberapa fungsi (seperti makro) yang tidak dapat ditemukan di tempat lain
  • Saya kebanyakan bekerja sendiri atau dengan 1-2 programmer lain tetapi menemukan seseorang dengan pengetahuan lisp bisa sulit

Jadi apa yang Anda pikirkan?

Adam Arold
sumber
Seberapa besar komunitas Python dibandingkan dengan PHP? Saya berasumsi bahwa menemukan pengembang Python mungkin sulit juga, dibandingkan untuk menemukan pengembang PHP, jadi saya cenderung hanya memilih di antara ini untuk opsi jika proyek ini eksperimental.
Alex
Saya tidak terlalu suka PHP jadi ini bukan pilihan bagi saya. Karena saya hanya bos saya, tidak ada yang memaksa saya untuk menggunakan sesuatu yang tidak saya sukai. :)
Adam Arold
2
Komunitas pengembangan @Vash Python mungkin tidak sebesar PHP, tetapi masih sangat besar. Selain itu, saya menemukan dokumentasi online Python lebih unggul dari PHP.
quanticle
Itu benar saya pikir.
Adam Arold
2
Saya tidak percaya bahwa belum ada yang menyebutkan Clojure!
Chiron

Jawaban:

7

Anda berasal dari latar belakang Java, jadi mengapa tidak memeriksa bahasa pemrograman Clojure?
Ini adalah dialek Lisp modern yang hidup di JVM, jadi Anda memiliki akses ke banyak JAR di luar sana.

Meskipun Anda tidak akan menemukan kerangka kerja web yang dipoles dan siap produksi seperti Django dan Rails di Clojure universe (setidaknya sekarang), tetapi programmer menggunakan kerangka kerja web Noir dan Compojure.
Anda juga dapat menggunakan aplikasi web Clojure di platform Heroku.

Clojure sangat bermanfaat tetapi kurva pembelajarannya sangat curam. Apakah Anda siap untuk belajar pemrograman fungsional (dengan asumsi Anda tidak terbiasa)? untuk hidup di luar dunia OOP?

Python adalah sisi yang aman: ia matang, banyak buku, banyak kerangka kerja web, kumpulan pengetahuan yang besar dan mudah dipelajari.

Jadi keputusannya benar-benar milik Anda.

Chiron
sumber
1
Saya telah memeriksa Clojure belakangan ini dan saya pikir itu yang paling sesuai dengan kebutuhan saya! Terima kasih atas sarannya!
Adam Arold
7

Lisp adalah bahasa yang Anda dengar saat berdiri dekat dan mendengarkan suara-suara yang berasal dari menara gading. Bahasa lain, seperti PHP, mungkin tidak se-elegan atau sekuat itu, tetapi mereka seperti bahasa yang umum, mudah dan pemaaf.

Sementara Lisp telah memengaruhi banyak bahasa, itu tidak pernah membuatnya menjadi mainstream. Mengapa? Karena banyak pengembang tidak memahami konsep bahasa, bagi mereka itu tampak agak tidak jelas. Lisp sulit dipahami oleh banyak pengembang. Pernahkah Anda melihat deskripsi pekerjaan yang membutuhkan Lisp sebagai bahasa pemrograman? Saya belum. "Mengapa kamu bertanya? Karena sulit untuk mempertahankan dan membaca untuk banyak orang. Di Lisp, Anda bisa lebih sering tidak langsung mengatakan apa yang dilakukan ekspresi hanya dengan melihatnya. Itu tidak memiliki semacam kesederhanaan tertentu, itu sebabnya ia tidak pernah menjadi bahasa umum.

Namun demikian, Lisp telah berdampak pada banyak bahasa. Saya merekomendasikan untuk mempelajarinya untuk tujuan akademis. Ini memperluas batas mental Anda sehingga Anda sering dapat memikirkan masalah dari sudut pandang yang berbeda. Namun, saya tidak akan merekomendasikan menggunakannya untuk aplikasi web, kecuali jika Anda sedang melakukan studi kelayakan untuk universitas. Kurang dukungan dalam alat dan perpustakaan dibandingkan dengan opsi lain. Jika Anda ingin memperoleh keterampilan praktis yang pada akhirnya akan menghasilkan sejumlah uang dan dapat disajikan pada resume Anda, maka pilihlah Python. Anda juga akan mendapat manfaat dari Lisp tetapi kurang praktis dan lebih akademis, meskipun gaya pemrograman Anda secara keseluruhan mungkin mendapat manfaat darinya.

Juga, ada kebangkitan bahasa fungsional akhir-akhir ini. Anda juga dapat melihat F # untuk .NET atau Scala pada JVM jika Anda ingin mengambil beberapa konsep fungsional.

Jadi buatlah pilihan Anda. Jika keduanya adalah bahasa nyata, yang mana yang lebih Anda pelajari: Latin / Yunani Kuno atau Prancis / Jerman / Italia / Spanyol / Cina / Arab?

Elang
sumber
Saya telah melihat lowongan iklan di Chicago - tidak hanya itu, mereka akan mempekerjakan Anda tanpa pengalaman dan melatih Anda. Saya sangat menginginkan pertunjukan itu, tetapi perjalanan itu akan membunuh saya. Akan saya akui, saya pikir itu hampir satu - satunya iklan yang pernah saya lihat selama bertahun-tahun.
Bryan Oakley
Ok apa yang akan saya lakukan: Saya akan belajar LISP dan Python juga, tapi saya akan menggunakan Python, karena alasan Anda dan orang lain yang disebutkan di atas. Terimakasih atas klarifikasinya.
Adam Arold
3

Diberi pilihan antara cadel umum dan python, saran pragmatis terbaik yang bisa saya berikan adalah belajar python . Sementara teknologis dalam diri saya berpikir setiap orang yang programnya harus belajar lisp, saya tidak berpikir mempelajarinya akan membantu Anda "mempercepat pekerjaan Anda".

Jika Anda belajar cadel, saya percaya itu akan membuat Anda menjadi programmer yang lebih baik dalam jangka panjang. Namun, mempelajari cadel untuk alasan yang Anda nyatakan tidak akan membuat Anda semakin dekat dengan tujuan instan Anda. Jika Anda menginginkan solusi praktis dan pragmatis, pelajari Python. Tidak ada cukup alat atau peluang untuk menggunakan lisp untuk membantu Anda dalam tugas sehari-hari Anda kecuali jika Anda tugas sehari-hari melibatkan menyesuaikan emacs.

Di sisi lain, jika Anda punya waktu untuk belajar dan belajar, dan bersedia menanggung akibat dari pilihan Anda (kelangkaan alat, lebih sulit untuk menemukan rekan kerja yang mendapatkan minyak, dll), gunakan minyak. Ini benar-benar bahasa yang hebat.

Bryan Oakley
sumber
3

Saya akan merekomendasikan menggunakan Lisp jika Anda adalah orang yang memotivasi diri sendiri yang setuju untuk mengerjakan pustaka kode Anda sendiri dalam jangka waktu yang lama, menikmati mendorong batas bahasa Anda, dan tidak keberatan hambatan sesekali dalam konfigurasi. Jika Anda wiraswasta, ini kemungkinan akan menjadi pendorong produktivitas dalam jangka panjang karena fitur makronya.

Python tidak sefleksibel, secepat, atau sekuat itu. Hampir sepele untuk dipelajari dibandingkan dengan banyak bahasa lain. Sebenarnya sangat Blubby. Ini memiliki dukungan luas, itu adalah bahasa du jour fad , dan memiliki banyak perpustakaan. Mungkin sedikit lebih baik jika Anda harus bekerja dengan orang-orang yang mengeluh tentang belajar bahasa baru.

Jika saya meninjau untuk mempekerjakan seseorang yang baik dalam Lisp dibandingkan dengan seseorang yang baik dalam Python, saya akan segera menganggap orang Lisp adalah programmer & ilmuwan komputer yang lebih baik daripada orang Python (semua hal lain dianggap sama).

Saya bias berat, saya yakin.

Paul Nathan
sumber
1
Bias atau tidak, saya mengerti maksud Anda!
Adam Arold
2

Jika Anda ingin menekankan apa yang dibicarakan oleh Paul Graham, saya akan mengadvokasi mendukung Lisp. Perbedaan dalam pendekatan dan pola pikir yang dianut oleh keluarga bahasa Lisp jauh lebih berpotensi untuk berdampak pada Anda sebagai programmer secara keseluruhan, karena dorongan untuk berpikir secara berbeda. Dan sementara saya belum melakukannya sendiri, sepertinya pengembangan web di Lisp cukup didukung: Lihat pertanyaan ini di SO.

Python adalah bahasa yang hebat, dan saya sama sekali tidak akan mengetuknya. Ada banyak kerangka kerja dan alat web yang bagus untuk Python, dan akan lebih mudah untuk menemukan orang-orang yang sudah terbiasa dengannya, ketika Anda membutuhkannya.

Pada akhirnya, karena lingkungan saat ini, memilih Lisp tampaknya selalu mengarah ke pertanyaan "Apakah Anda ingin menggunakan apa yang Anda inginkan, atau apakah Anda ingin menggunakan apa yang sudah digunakan industri?" Apa jawaban Anda untuk pertanyaan itu?

Asfallows
sumber
2

Jika Anda tidak memiliki tekanan waktu, gunakan Lisp. Mempelajari Lisp akan mengubah cara Anda melihat Python (dan setiap bahasa lain yang Anda tahu), tetapi mempelajari Python tidak akan mengubah cara Anda melihat Lisp (jika Anda mengetahuinya). Lisp lebih dari sekadar alat baru di kotak alat. Ini cara berpikir yang baru.

Saat Anda melakukannya, lihatlah Factor atau bahasa rangking lainnya . Bahasa konkatatif luar biasa untuk mengajari Anda cara berpikir dalam kombinator . Mempelajari bahasa gabungan akan mengubah cara Anda melihat semua bahasa lain.

Terakhir, latih otak kanan Anda. Formalisme bahasa pemrograman memaksa kita untuk menggunakan otak kiri kita secara berlebihan untuk menyelesaikan masalah. Aktifkan otak kanan Anda untuk mengakses perubahan paradigma yang mengubah game.

Hanya sedikit Roger
sumber
0

Lisp hanyalah alat, sama seperti setiap bahasa lainnya. Apakah ini memiliki fitur yang bermanfaat, tentu saja. Pada saat yang sama, dimungkinkan untuk memiliki keluaran yang sama dengan bahasa lainnya, hanya membutuhkan waktu dan kode yang lebih banyak. Masalah utama dengan Lisp adalah bahwa Anda HARUS mendapatkan, setidaknya, VPS hosting, karena tidak ada host bersama (yang saya tahu) yang mendukung berbagai variasi Lisp pada platform mereka.

Satu hal yang saya sarankan adalah, karena Anda seorang programmer Java, lihat Groovy (atau bahkan Scala). Mereka akan memungkinkan Anda untuk menggunakan perpustakaan dan API Java Anda dan akan memberikan peningkatan produktivitas.

Jetti
sumber
VPS tidak masalah karena ide-ide saya tidak akan berfungsi dengan shared hosting juga.
Adam Arold
0

Saya tidak tahu banyak tentang Lisp selain asal-usulnya. Yang saya tahu tentang Python adalah ini:

5 menit setelah piring terbang pertama mendarat, komunitas Python akan mengumpulkan sesuatu untuk berinteraksi dengan sistem I / O-nya.

Juga, terutama berasal dari JavaScript, saya menemukan Python sangat cocok. Mungkin sebaliknya mungkin benar.

Juga, Django cukup banyak kerangka untuk meniru saat ini.

Erik Reppen
sumber