Python vs FORTRAN

17

Mana yang lebih baik: FORTRAN atau Python? Dan saya kira dalam kedua kasus Anda membutuhkan Gnuplot, apakah saya benar?

Saya sedang mengerjakan mesin Windows saat ini.

Saya ingin menggunakannya untuk mendapatkan solusi numerik untuk masalah fisika, termasuk simulasi Monte-Carlo, integrasi dan diferensiasi numerik, dinamika molekuler, dll.

Saya melihat kursus fisika komputasi yang memperkenalkan FORTRAN (77 saya percaya) dan Python. Saya berencana memulai dengan yang satu dan kemudian belajar yang lain, tetapi saya tidak tahu transisi mana yang paling mudah.

Juga kompiler mana yang akan Anda rekomendasikan?

Pertanyaan dasar bagi saya datang ke: mana yang paling mudah dipelajari, mana yang tercepat, mana yang paling ramah pengguna dan di atas semua mana yang paling banyak digunakan (jadi perbandingan 4 ini)? Dan di samping itu, apa kompiler (gratis atau berbayar) yang paling umum digunakan? Saat ini saya sedang mempertimbangkan untuk mengubah laptop lama (Intel awal dual core) ke Linux; semoga cukup cepat.

Terima kasih banyak atas jawabannya sejauh ini! Jawaban yang sesuai dengan apa yang saya cari adalah dari LKlevin dan SAAD.

Saya tahu dasar-dasar C ++, Maple dan saya menguasai MATLAB dan Mathematica9 hampir sepenuhnya jika itu bisa membantu.

Nick
sumber
12
Anda benar-benar harus lebih spesifik; ini seperti bertanya "mana yang lebih baik: palu atau obeng?". Lihatlah scicomp.stackexchange.com/questions/11006 (ini tentang C ++ bukan Fortran, tetapi sebagian besar poin harus berlaku sama).
Christian Clason
@ChristianClason, titik adil: p
Nick
Terima kasih atas hasil edit Anda, meskipun ini tidak mempersempit segalanya. Saya tidak yakin apa lagi yang bisa dikatakan daripada yang sudah diberikan sebagai jawaban untuk pertanyaan yang terkait di atas.
Christian Clason
2
Juga, pertanyaan tentang kompiler adalah masalah yang terpisah dan harus menjadi pertanyaan yang terpisah. (Kalau tidak, orang yang akrab dengan Fortran tetapi tidak tertarik dengan Python tidak akan melihatnya.) Beberapa rekomendasi sudah diberikan di scicomp.stackexchange.com/questions/8617 .
Christian Clason
1
Jika Anda tahu matlab, Anda dapat mempelajari sebagian besar algoritma numerik dengan mengimplementasikannya di sana, meskipun kinerja Anda hampir selalu lebih buruk daripada rutinitas matlab bawaan. Dari sana Anda dapat memutuskan apa kebutuhan kinerja Anda dan pindah ke perpustakaan / bahasa yang lebih efisien.
Godric Seer

Jawaban:

29

Kemudahan belajar

Python dan Fortran keduanya bahasa yang relatif mudah dipelajari. Mungkin lebih mudah untuk menemukan materi pembelajaran Python yang baik daripada materi pembelajaran Fortran yang baik karena Python digunakan lebih luas, dan Fortran saat ini dianggap sebagai bahasa "khusus" untuk komputasi numerik.

Saya percaya transisi dari Python ke Fortran akan lebih mudah. Python adalah bahasa yang ditafsirkan, jadi jumlah langkah yang diperlukan untuk menjalankan program pertama Anda lebih kecil (buka penerjemah, ketik print("Hello, world!")di prompt) daripada Fortran (tulis program "Hello world", kompilasi, jalankan). Saya juga berpikir bahwa ada bahan yang lebih baik untuk mengajarkan gaya berorientasi objek dalam Python daripada di Fortran, dan ada lebih banyak kode Python yang tersedia di GitHub daripada kode Fortran.

Bangun dan berjalan di Windows

Menginstal Python seharusnya tidak terlalu menyakitkan; ada distribusi Windows yang tersedia. Saya sarankan menggunakan distribusi ilmiah seperti Anaconda atau Enthought Canopy. Sebenarnya tidak ada kompiler, per se; penerjemah mengambil peran itu. Anda akan ingin menggunakan juru bahasa berbasis CPython, karena ada lebih banyak perpustakaan numerik yang tersedia dan dapat beroperasi dengan baik dengan C, C ++, dan Fortran. Implementasi juru bahasa lainnya termasuk Jython dan PyPy.

Pada mesin Windows, menginstal kompiler Fortran akan mengganggu. Kompiler baris perintah yang umum adalah program-program seperti gfortran, ifort (dari Intel; gratis untuk penggunaan pribadi, jika tidak memerlukan biaya), dan pgfortran (dari PGI; versi uji coba gratis, jika tidak perlu biaya). Untuk menginstal kompiler ini, Anda mungkin perlu menginstal semacam lapisan kompatibilitas tipe UNIX / POSIX, seperti Cygwin atau MinGW. Saya merasa sulit untuk bekerja dengannya, tetapi beberapa orang menyukai alur kerja itu. Anda juga dapat menginstal kompiler dengan GUI, seperti Visual Fortran (sekali lagi, Anda harus membayar lisensi).

Di Linux, akan lebih mudah untuk menginstal Python dan kompiler; Saya masih akan menginstal Anaconda atau Enthought Canopy sebagai distribusi Python.

Kecepatan: tradeoff produktivitas vs kinerja

Dalam menggunakan Python (atau MATLAB, Mathematica, Maple, atau bahasa apa pun yang ditafsirkan), Anda menyerahkan kinerja untuk produktivitas. Dibandingkan dengan Fortran (atau C ++, C, atau bahasa kompilasi lainnya), Anda akan menulis lebih sedikit baris kode untuk menyelesaikan tugas yang sama, yang secara umum berarti Anda membutuhkan waktu lebih sedikit untuk mendapatkan solusi yang berfungsi.

Denda kinerja yang efektif untuk menggunakan Python bervariasi, dan dikurangi dengan mendelegasikan tugas intensif komputasi ke bahasa yang dikompilasi. MATLAB melakukan hal serupa. Ketika Anda melakukan perkalian matriks dalam MATLAB, ia memanggil BLAS; penalti kinerja hampir nol, dan Anda tidak perlu menulis Fortran, C, atau C ++ apa pun untuk mendapatkan kinerja tinggi. Situasi serupa ada di Python. Jika Anda dapat menggunakan perpustakaan (misalnya, NumPy, SciPy, petsc4py, dolfin dari FEniCS, PyClaw), Anda dapat menulis semua kode Anda dengan Python dan mendapatkan kinerja yang baik (penalti mungkin 10-40%) karena semua komputasi bagian intensif adalah panggilan ke perpustakaan bahasa yang dikompilasi dengan cepat. Namun, jika Anda menulis semuanya dengan Python murni, hukuman kinerja akan menjadi faktor 100-1000x. Jadi jika Anda ingin menggunakan Python dan harus memasukkan kebiasaan, Komputasional intensif rutin, Anda akan lebih baik menulis bagian itu dalam bahasa yang dikompilasi seperti C, C ++, atau Fortran, kemudian membungkusnya dengan antarmuka Python. Ada perpustakaan yang memfasilitasi proses ini (seperti Cython dan f2py), dan tutorial untuk membantu Anda; umumnya tidak memberatkan.

Lingkup penggunaan

Python digunakan secara lebih luas secara keseluruhan sebagai bahasa tujuan umum. Fortran sebagian besar terbatas pada komputasi numerik dan ilmiah, dan terutama bersaing dengan C dan C ++ untuk pengguna di domain itu.

Dalam ilmu komputasi, Python biasanya tidak bersaing secara langsung dengan bahasa yang dikompilasi karena hukuman kinerja yang saya sebutkan. Anda akan menggunakan Python untuk kasus-kasus di mana Anda menginginkan produktivitas dan kinerja tinggi adalah pertimbangan sekunder, seperti dalam membuat prototipe algoritma numerik intensif, pemrosesan data, dan visualisasi. Anda akan menggunakan Fortran (atau bahasa kompilasi lain) ketika Anda memiliki ide yang bagus tentang apa yang harus menjadi algoritma dan desain aplikasi Anda, Anda bersedia menghabiskan lebih banyak waktu menulis dan men-debug kode Anda, dan kinerja sangat penting. (Misalnya, kinerja adalah langkah pembatas dalam proses simulasi Anda, atau itu adalah kunci yang diberikan dalam penelitian Anda.) Strategi yang umum adalah mencampur Python dan bahasa yang dikompilasi (biasanya C atau C ++, tetapi Fortran telah digunakan juga), dan hanya menggunakan bahasa yang dikompilasi untuk bagian kode yang paling sensitif terhadap kinerja; biaya pengembangan, tentu saja, lebih sulit untuk menulis dan men-debug suatu program dalam dua bahasa daripada program dalam satu bahasa.

Dalam hal paralelisme, standar MPI saat ini (MPI-3) memiliki ikatan Fortran dan C asli. Standar MPI-2 memiliki binding C ++ asli, tetapi MPI-3 tidak, dan Anda harus menggunakan binding C. Binding MPI pihak ketiga ada, seperti mpi4py. Saya telah menggunakan mpi4py; ini bekerja dengan baik, dan mudah digunakan. Untuk paralelisme skala besar (puluhan ribu inti), Anda mungkin ingin menggunakan bahasa yang dikompilasi karena hal-hal seperti memuat modul Python secara dinamis akan menggigit Anda di pantat pada skala jika Anda melakukannya dengan cara yang naif. Ada beberapa cara untuk mengatasi hambatan itu, seperti yang ditunjukkan oleh pengembang PyClaw, tetapi lebih mudah untuk menghindarinya.

Pendapat pribadi

Saya memiliki sekitar satu dekade pengalaman di Fortran 90/95, dan saya juga memprogram di Fortran 2003. Saya memiliki sekitar lima tahun pengalaman pemrograman dengan Python. Saya menggunakan Python lebih dari saya menggunakan Fortran karena, terus terang, saya mendapatkan lebih banyak dilakukan dengan Python. Mayoritas pekerjaan yang perlu saya lakukan tidak memerlukan sumber daya superkomputer utama dan umumnya tidak layak dikembangkan kembali dalam bahasa lain, jadi Python tidak masalah untuk menyelesaikan ODE dan PDE. Jika saya perlu menggunakan bahasa yang dikompilasi, saya akan menggunakan C, C ++, atau Fortran, dalam urutan itu.

Sebagian besar kode Fortran yang saya lihat jelek, terutama karena sebagian besar komunitas sains komputasi tampaknya tidak mengetahui atau menolak praktik terbaik apa pun yang ditemukan oleh insinyur perangkat lunak dalam 30 tahun terakhir. Intinya: tidak ada kerangka pengujian unit yang baik di Fortran. (Yang terbaik yang saya temui adalah FUnit, oleh NASA, dan itu tidak dipertahankan lagi.) Ada beberapa kerangka kerja pengujian unit Python yang baik, generator dokumentasi Python yang baik, dan umumnya banyak contoh yang lebih baik dari praktik pemrograman yang baik.

Geoff Oxberry
sumber
Jawabannya sangat bagus dan lengkap :). Saya telah menginstal Linux kemarin di mana python-compiler sudah ada. Sekarang saya bertanya-tanya apakah ada cara mudah untuk berbagi file antara Linux dan mesin Windows saya? Saya perhatikan bahwa setiap kali saya menggunakan tongkat untuk mentransfer data, mesin Windows dan Linux mengabaikan bagian-bagian tertentu secara de stich (yang diformat dalam format NFTS).
Nick
dan masalah terakhir saya diselesaikan bij menggunakan format FAT32 (Sejauh ini setidaknya).
Nick
NB: FAT32 memiliki ukuran file maksimum yang terbatas.
meawoppl
@ Meawoppl, adakah cara yang lebih nyaman untuk bertukar file antara Linux dan Windows? Mungkin dropbox? Apakah ada solusi berbasis perangkat keras?
Nick
Simpan file Anda di bawah 4GB: P Sungguh, saya tidak tahu solusi yang baik. Ada juga beberapa kelalaian dalam konvensi nama file. Saya ingat pernah melanggar beberapa dukungan windows dengan menamai file <3.txt yang membuat M $ wajah sangat sedih. Dukungan NTFS di linux cukup bagus sekarang, tetapi secara khusus tidak boleh menggunakan OSX. Saya benar-benar berpikir kami akan menyelesaikan masalah ini sekarang.
meawoppl
7

Saya akan tinggal jauh dari Fortan, atau jika Anda harus, menggunakan versi yang cukup baru (2003 daripada 77). Banyak perangkat lunak fisika (simulasi Monte Carlo khususnya) ditulis dalam Fortran, hanya karena proyek awalnya dimulai pada tahun 80-an.

Yang sedang berkata, python dan Fortran adalah dua bahasa yang sangat berbeda, dan apa yang harus mereka gunakan sangat berbeda. Python adalah level tinggi dan secara umum tidak secepat itu (dibandingkan dengan Fortran & C ++). Alasan mengapa ini digunakan begitu banyak adalah karena itu cukup cepat untuk sebagian besar hal dan memiliki perpustakaan (Fortran powered) yang sangat baik untuk banyak (tetapi tidak semua) dari hal-hal yang ingin Anda lakukan. Ini juga memiliki Matplotlib yang sangat baik untuk merencanakan (jadi tidak perlu untuk GNUplot) dan Anda bisa mendapatkan kinerja yang cukup baik dengan menggunakan hal-hal seperti Cython untuk menulis bit mahal. Ini tidak akan secepat Fortran atau C ++, dan parallelisation cukup mengerikan, membuatnya tidak memadai untuk komputasi numerik berkinerja tinggi. Jika apa yang Anda inginkan dapat ditangani dengan memanggil perpustakaan Fortran atau C,

Fortran adalah bahasa tingkat agak rendah. Untuk numerik, dukungan pustaka sangat bagus, tetapi levelnya masih sangat rendah sehingga Anda memiliki banyak bug yang bisa Anda hindari, seperti tidak sengaja memberikan ukuran array yang salah ke suatu metode. Bug ini sulit ditemukan dan Anda mungkin tidak melihatnya sama sekali. Percayalah, saya menghabiskan cukup banyak waktu menulis Fortran 77.

C ++ adalah (menurut pendapat saya yang sederhana) media yang bahagia. Dengan perpustakaan seperti Armadillo atau Eigen, Anda bisa lolos dengan gaya pengkodean tingkat yang cukup tinggi sambil mendapatkan gaya kinerja tingkat rendah.

Berbicara tentang kinerja, satu-satunya pilihan nyata untuk python numerik sekarang adalah CPython. Jika Anda mengunduh sesuatu seperti WinPython, Anda juga akan mendapatkan sebagian besar perpustakaan yang Anda butuhkan.

Untuk Fortran di windows, segalanya menjadi sedikit lebih sulit. Saya akan merekomendasikan beralih ke linux dan menggunakan kompiler ifort gfortran atau Intels. Ifort cenderung lebih cepat untuk kode numerik dalam pengalaman saya, tetapi hanya gratis untuk penggunaan non-komersial, non-akademik.

Singkatnya: Kecuali jika Anda ingin menjalankan simulasi yang sangat berat, python adalah pilihan yang jauh lebih mudah dan jauh lebih menyenangkan untuk dikerjakan. Ini juga harus cukup cepat untuk sebagian besar proyek tingkat siswa. Jika Anda membutuhkan kinerja yang lebih baik, mulailah dengan melihat jumlah limbah perpustakaan yang sudah ditulis dan biarkan yang memutuskan bahasa Anda. Jika Anda harus menulis sesuatu dari awal, gunakan C ++.

Juga peringatan: sebagian besar kode yang ditulis oleh fisikawan cukup mengerikan, mungkin karena fisikawan cenderung menganggap pemrograman itu mudah dan tidak memerlukan ketelitian yang sama yang mungkin mereka gunakan dalam matematika. Pertimbangkan mengambil kelas atau membeli buku yang mengajarkan pemrograman.

Penafian: Saya seorang ahli fisika yang telah menghabiskan cukup banyak waktu dengan kode Monte Carlo berbasis Fortran 77 dan saat ini melakukan semua pemrosesan datanya dengan Python.

LKlevin
sumber
Mengenai paralelisasi, peneliti telah menggunakan Python secara paralel dengan sukses pada puluhan ribu core dengan efisiensi paralel yang baik. (Misalnya, PyClaw telah dijalankan pada semua Shaheen, yang 65.000+ inti.)
Geoff Oxberry
1
Yah itu mungkin, tapi setahu saya hanya dengan memastikan bahwa bagian paralel terjadi di luar CPython yang merupakan upaya yang cukup besar. Bagian paralel dari PyClaw (PETSc) ditulis dalam C misalnya. Alternatif lain adalah menjalankan beberapa instance dari CPython, tetapi itu tidak sepenuhnya sepele.
LKlevin
Sebagian besar aplikasi paralel tidak trivial. Anda menulis "parallelisation [Python] cukup mengerikan, membuatnya tidak memadai untuk komputasi numerik berkinerja tinggi." Tidak ada yang menulis kode kinerja tinggi dengan Python murni. Alasan untuk keputusan ini tidak ada hubungannya dengan paralelisme, dan tidak membatalkan penggunaan Python sebagai bahasa antarmuka dalam komputasi kinerja tinggi, asalkan digunakan dengan tepat. Kutipan Anda adalah orang bodoh yang mengonfigurasi masalah paralelisme, kinerja tinggi, dan bahasa yang ditafsirkan; tidak ada yang kompeten akan merancang aplikasi seperti itu.
Geoff Oxberry
Saya setuju bahwa Python adalah bahasa antarmuka yang sangat baik untuk hampir semua tujuan, tapi itu menjauh dari pertanyaan. Sebagian besar aplikasi nontrivial, masalahnya di sini adalah bahwa semua kasus paralelisasi, termasuk yang sepele, adalah non-sepele dalam python. Ini bisa menjadi gangguan jika masalah Anda dinyatakan dengan baik dalam hal operasi Numpy atau Cython. Tidak, Anda tidak akan menggunakan ini pada 65000 core cluster, tetapi Anda mungkin menerima kinerja 2x hit pada 100 core.
LKlevin
Paralelisme Wrt, hal yang menyenangkan tentang Fortran adalah bahwa selain MPI / OpenMP ada juga Co-array yang sekarang menjadi bagian dari standar. Misalnya, lihat ini jolts.stanford.edu/72/…
stali
7

Python adalah bahasa tingkat tinggi yang sangat lambat. Untuk penghitungan angka cepat Anda harus menulis kernel penghitungan utama dalam bahasa tingkat rendah seperti C / C ++ yang artinya sekarang Anda harus belajar bukan hanya satu tetapi setidaknya dua bahasa. Anda juga harus berurusan dengan sakit kepala tambahan yang terkait dengan debugging / instalasi / pemeliharaan dll. Kebanyakan orang menggunakan Python sebagai gula sintaksis untuk menyembunyikan kedatangan singkat C / C ++.

Modern Fortran (90 dan yang lebih baru) memiliki level yang cepat dan tinggi dengan sintaks yang hampir mirip MATLAB. Jadi Anda dapat melakukan hal-hal seperti:

k=k+matmul(transpose(B),matmul(D,B))*weight(i)*detj

atau

indx(:)=indxmap(indx(:),2)

atau bahkan lebih sederhana

indx=indxmap(indx,2)

dll.

Di Linux ada sejumlah kompiler Fortran gratis. saya menggunakan

  1. GCC
  2. Studio Solaris
  3. Open64
  4. Intel (hanya penggunaan non-komersial)

Saya tidak menggunakan Mac / OSX tetapi ada PGI gratis.

Dan tolong jangan gunakan FORTRAN 77. Tidak ada yang menggunakannya untuk menulis kode baru.

Penafian: Saya pribadi melihat Python untuk menulis kode FE kecil yang tidak terstruktur (dibangun di atas PETSc) tetapi jumlah pekerjaan / pengkodean yang terlibat lebih dari sekadar menulisnya Fortran 95.

stali
sumber
1
Untuk ini saya akan menambahkan bahwa Anda dapat melakukan pemrograman berorientasi objek yang cukup serius di Fortran 2003; lihat misalnya panduan ini . Saya sudah sering menggunakannya dalam kode saya sendiri dan sudah sangat efektif untuk apa yang ingin saya lakukan. Banyak orang akan memberitahu Anda untuk menghindarinya - saya katakan tetap berpikiran terbuka, Anda mungkin sangat menyukainya. Tentu saja saya lakukan.
Daniel Shapero
4

Python sangat praktis untuk analisis simulasi penuh dengan paket serbaguna yang terdokumentasi dengan baik: pembuatan grid, komputasi array, dan penanganan struktur data ( numpy dan panda ) serta visualisasi data dengan matplotlib. Untuk simulasi kompleks dengan file hasil besar, bahkan lebih baik untuk bekerja dengan paket VTK yang memungkinkan mengekspor data untuk dibaca oleh aplikasi open-source canggih (seperti Paraview atau Visit)

Fortran selama beberapa waktu merupakan bahasa yang disukai untuk domain yang berbeda dalam simulasi. Ini mudah dibaca (kurang dibaca daripada kode Python). Penanganan array adalah salah satu kelebihan bahasa, cukup mudah untuk didefinisikan dan digunakan dalam menggunakan semua jenis operasi array. Ini berguna saat debugging juga.

Perbandingan turun ke kinerja : Saya hanya melakukan perhitungan skala besar menggunakan bahasa yang dikompilasi (C ++ dan Fortran 90) tetapi tidak pernah dengan Python. Utas lain memberikan lebih banyak informasi kinerja tentang bahasa yang ditafsirkan dan dikompilasi: Bahasa apa yang harus saya gunakan saat mengajar kursus sarjana dalam pemrograman komputer?

Secara pribadi, saya suka bekerja dengan Python secara umum, terutama untuk post-processing. Pemrograman python menyenangkan!

SAAD
sumber
1
Kinerja hampir selalu penting. Kurangnya perhatian terhadap kinerja adalah mengapa orang membutuhkan 8 core dengan 16Gb RAM untuk memeriksa email dan menjelajahi web.
stali
Saya mengalami ketidakberuntungan karena harus membaca kode python orang lain. Saya tidak akan mengkategorikan kode py sebagai mudah dibaca.
Biswajit Banerjee
@stali: Saya sepenuhnya setuju
SAAD
1
@BiswajitBanerjee: bukan tidak mungkin untuk menulis kode yang rumit dengan bahasa apa pun, tapi setidaknya saya dapat dengan mudah mengidentifikasi input dan output dari fungsi apa pun, di sinilah Fortran menjadi mengerikan! :)
SAAD
3

Dengan Python Anda tidak perlu Gnuplot, Anda dapat menggunakan, misalnya, matplotlib dan / atau menggunakan shell IPython. IPython adalah shell Python interaktif yang, dalam mode% pylab, menyediakan cukup banyak perintah memplot yang Anda miliki di MATLAB.

Sangat mungkin bahwa perhitungan ilmiah akan sangat memperluas pergeseran dari MATLAB ke Python dalam 5+ tahun ke depan.

Jolvi
sumber
Salah satu keuntungan dari Gnuplot adalah hampir selalu diinstal pada mesin Linux (cluster / server dll) dan sangat berguna untuk cepat / kotor yaitu. Ini seperti vi untuk viz.
stali
1

Saya akan tetap menggunakan MATLAB, ini memanggil perpustakaan matematika cepat, dan Anda tidak akan melihat banyak perbedaan dalam kinerja dengan beralih ke FORTRAN di Windows. Pada saat yang sama Anda akan memiliki infrastruktur yang lebih baik di MATLAB untuk melaporkan hasil dan menjalankan kode Anda. Kelemahan dari MATLAB adalah biayanya. FORTRAN pada dasarnya gratis, dan ada banyak perpustakaan gratis di luar sana.

FORTRAN sangat mudah dipelajari dan mulai pemrograman. Ini pada dasarnya melakukan apa yang disarankan namanya: menerjemahkan formula Anda ke dalam kode, yang mudah dibaca dan dipahami. Itu sebabnya fisikawan banyak menggunakannya di masa lalu. Selama sebagian besar kode Anda adalah tentang menyelesaikan masalah fisika (bukan membangun GUI atau melakukan hal-hal keren lainnya), kode FORTRAN akan mudah dipelihara.

Saya akan merekomendasikan Python hanya jika Anda menikmati pemrograman. Pikirkan ini: ketika Anda membuat kode solusi untuk masalah fisika, apakah Anda menikmati pemrograman bagian dari solusi? Jika Anda melakukannya, maka Python adalah sebuah pilihan, karena bahasanya jauh lebih baik daripada MATLAB.

Aksakal
sumber
2
Pernyataan Anda tentang perbedaan kinerja dalam beralih dari MATLAB ke Fortran tidak benar secara umum. Fortran hebat jika Anda menulis kode yang array adalah struktur data yang baik secara alami, jika Anda bisa hidup dengan cara menangani I / O, dan jika memiliki perpustakaan yang Anda butuhkan. Pustaka numerik di Python tumpang tindih dalam fungsionalitas dengan MATLAB, dan saya merasa lebih mudah untuk menulis antarmuka Python ke kode C daripada antarmuka MATLAB ke kode C.
Geoff Oxberry
Terkadang Anda memang melihat banyak perbedaan. Saya baru-baru ini menulis ulang program simulasi fisika dari Matlab (menggunakan paket bvp6c secara internal) ke Fortran 2008 (menggunakan paket bvp_solver secara internal), dan waktu pelaksanaan turun menjadi hanya 1,4% setelah beralih, meskipun saya tidak mengubah algoritme atau keseluruhan struktur program. Untuk simulasi yang dulu membutuhkan ~ 3,5 hari per titik data untuk bertemu, ini adalah peningkatan yang sangat nyata.
jabirali