Apakah umum menggunakan prototipe dalam bahasa tingkat tinggi? [Tutup]

18

Saya saat ini bermain-main dengan ide memulai sebuah proyek yang jauh melebihi kemampuan pemrograman saya saat ini dalam bahasa yang saya miliki sangat sedikit pengalaman dunia nyata di (C). Apakah akan berharga untuk membuat prototipe dalam bahasa tingkat yang lebih tinggi yang lebih saya kenal (seperti Perl / Python / Ruby / C #) supaya saya bisa menjalankan desain secara keseluruhan?

Pada akhirnya, produk akhir adalah kinerja sensitif (ini adalah mesin basis data), maka pilihan C, tapi saya khawatir tidak tahu C dengan baik akan membuat saya kehilangan hutan untuk pohon-pohon.

Saat mencari pertanyaan serupa, saya perhatikan seorang rekan menyebutkan bahwa programmer dulu membuat prototipe di Prolog, lalu memutar engkolnya di assembler.

Mark Canlas
sumber
4
Saya pernah mendengar tentang orang-orang yang akan menulis assembler dengan terlebih dahulu mengkode apa yang mereka inginkan dalam C, kemudian membongkar dan menyetel perakitan yang dihasilkan.
user16764
9
Jangan lupa bahwa kinerja lebih sering muncul untuk memperbaiki pemilihan algoritma dan implementasi, menulis kode paralel untuk masalah paralel yang memalukan, dan representasi data yang baik. Jangan khawatir tentang C sampai Anda mendapatkan desain yang benar.
Peter Smith
1
@ user16764: Sebenarnya melakukan itu. Kecuali bahasanya adalah Fortran. Tapi kami mengatur sendiri keluaran kompiler persis seperti yang Anda jelaskan.
S.Lott
C belum tentu lebih cepat. Apalagi jika kinerjanya terikat IO. Bahkan untuk kinerja yang terikat CPU, jika Anda bukan pakar C maka VM yang dioptimalkan mungkin dapat mengungguli apa pun yang Anda tulis sendiri.
jiggy
Saya sering menggunakan teknik prototyping ini: masalah diekspresikan dalam bahasa yang paling alami, yang akhirnya diimplementasikan sebagai DSL. Kemudian, ketika prototipe selesai, alih-alih pengodean ulang bagian DSL ke bahasa tingkat yang lebih rendah saya meningkatkan implementasi kompiler DSL ini, sampai kinerja dapat diterima.
SK-logic

Jawaban:

27

Menggunakan C tidak secara otomatis membuat aplikasi Anda lebih cepat. Ketika Anda memiliki kemampuan untuk memilih bahasa pemrograman yang berbeda untuk platform Anda, saya sangat merekomendasikannya.

Seperti yang dikatakan Bill Harlan :

Lebih mudah untuk mengoptimalkan kode yang benar daripada memperbaiki kode yang dioptimalkan . Optimalisasi prematur sebenarnya menghambat optimasi dalam jangka panjang. Optimalisasi yang tidak perlu mendistorsi desain, menghancurkan modularitas dan menyembunyikan informasi, dan membuat kode lebih sulit untuk dimodifikasi. Bug laten membutuhkan waktu lebih lama untuk ditemukan. Kita sering menemukan dengan membuat profil, atau dengan mengganti mesin atau kompiler, bahwa kita salah menilai upaya komputasi kode kita. Tebak apa? Sekarang, optimasi jauh lebih sulit daripada yang seharusnya.

Jika Anda benar-benar dapat memprediksi masalah kinerja, pertimbangkan untuk menggunakan C ++. kata cprogramming.com sangat baik :

Anda mungkin bertanya-tanya, bagaimanapun, apakah itu layak menyerah usabilitas dari C ++ untuk mendapatkan peningkatan kecil dalam kinerja dengan C, terutama ketika C ++ dapat, jika perlu, ditulis dalam gaya pemrograman C .


Untuk lebih menjawab pertanyaan Anda yang sebenarnya: Saya akan menulis kode dalam bahasa tingkat yang lebih tinggi, bukan hanya membuat prototipe, dan hanya mengoptimalkan dalam bahasa tingkat yang lebih rendah ketika Anda mengalami masalah kinerja.

Steven Jeuris
sumber
25
+1: Selain itu, Perl, Python, dan Ruby dapat memanggil fungsi C, sehingga Anda dapat menulis bagian yang peka terhadap kinerja di C jika perlu.
Larry Coleman
Saya telah membuat prototip kode visi mesin di Jawa; yang ternyata sebenarnya cukup cepat. Pengodean ulang menjadi C akan sangat mudah (Anda hanya menulisnya seperti C; dengan menggunakan antipattern primitif fiksasi)
Tim Williscroft
Saya telah menulis kode waktu-nyata di Jawa. Dalam proyek khusus itu, akses file dilakukan dengan C ++, dan kode waktu-nyata ada di Jawa - gila! Namun, kode waktu nyata sangat cepat. Itu tidak terlalu rumit, tetapi tidak menangani jumlah data yang luar biasa dalam waktu singkat. Jadi saya katakan Anda pasti dapat menggunakan bahasa tingkat tinggi untuk aplikasi yang sensitif terhadap kinerja.
konfigurator
@Tim Williscroft: Saya sepertinya membuka halaman ini ketika saya mencari "primitive fixation antipattern". Apa itu?
SingleNegationElimination
@TokenMacGuy: obsesi primitif memiliki lebih banyak hits (antipattern yang sama)
Tim Williscroft
7

Tidak akan bernilai untuk melakukan itu, karena a) bagian-bagian dari bahasa-bahasa yang menerjemahkan langsung ke C tidak akan lebih sederhana, dan b) bagian-bagian yang tidak menerjemahkan langsung ke C akan lebih sulit untuk menulis ulang dalam C daripada jika Anda menulisnya dalam C di tempat pertama.

pengguna16764
sumber
+1 - Terutama karena akan sulit untuk menggeser kode OO ke C jika Anda tidak terbiasa dengan bahasa tersebut, atau itu akan membuat penggunaan bahasa tingkat tinggi lebih canggung jika Anda menulis dengan cara prosedural.
Jetti
Ya persis. Saya khawatir bahwa saya mungkin masih berpikir dalam konsep yang lebih tinggi yang tidak mudah diterjemahkan ke C, seperti jika saya menggunakan terlalu banyak sihir atau gula.
Mark Canlas
4

Ini bukan pertanyaan dengan jawaban ya atau tidak. Izinkan saya menimbang dengan anekdot.

Contoh 1

Saya ditugaskan untuk porting game yang ditulis dalam Java ke Flash, AS3. Di permukaan, ini memiliki potensi untuk berjalan relatif lancar. Bagaimanapun, Anda bisa menganggap pekerjaan seperti itu lebih jelas daripada pekerjaan rata-rata klien Anda, karena Anda sudah memiliki spesifikasi fungsional yang sepenuhnya dibangun dalam bentuk game sumber. Java dan AS 3 keduanya bahasa tingkat tinggi, dan AS3 memiliki banyak kesamaan dengan Java, seperti struktur paket, pewarisan tunggal / multi-antarmuka, pengetikan kuat (opt-in), dan gagasan variabel publik / dilindungi / pribadi dan deklarasi fungsi. Pada saat itu saya masih sangat hijau di Jawa, dan benar-benar baru dengan basis kode sumber asli. Jadi saya hanya menyelam untuk melihat apa yang bisa saya temukan dengan berharap itu akan cepat dan mudah.

Ternyata, pembuat kode telah berusaha untuk membuat mesin abstrak yang dapat dipindahkan dari Jawa ke beberapa lingkungan lain yang tidak ditentukan. Ini memberi saya harapan bahwa itu akan langsung ke port. Sayangnya, yang saya temukan adalah bahwa saya sedang melihat prospek menciptakan kembali Flash itu sendiri di atas Flash, tanpa manfaat dari Threads. Sebuah port literal, ternyata, adalah ide yang buruk ... mimpi buruk kinerja. Selain itu, game ini mengimplementasikan bahasa skrip eksternal eksternal kustomnya sendiri, yang berarti membuat parser dan lexer untuk bahasa itu jika saya berharap dapat menggunakan semua file data sumber asli.

Pada akhirnya, mengingat keterbatasan waktu dan anggaran, kode sumber asli tidak terlalu membantu. Bagian yang paling membantu tentang memilikinya adalah saya tahu bagaimana cara meniru dengan tepat alur kontrol dari logika permainan ... tetapi apakah saya benar-benar membutuhkan sumber asli untuk itu? Mungkin tidak.

Tetapi contoh itu mungkin tidak relevan karena ini semacam kebalikan dari situasi Anda. Saya berharap untuk menggunakan basis kode yang tidak saya tulis, dalam bahasa yang saya tidak tahu untuk mempercepat pengembangan di lingkungan yang saya sangat kenal. Jadi inilah contoh yang berbeda

Contoh 2

Memperhatikan apa yang dilakukan pengembang Java dalam mencoba membuat basis kode portabel, saya mulai melakukan sesuatu yang serupa untuk diri saya sendiri dalam pekerjaan Flash saya ... menulis kode yang tidak terlalu bergantung pada perluasan flash.display. * Kelas misalnya, misalnya, dan menggunakan komposisi untuk membuat tampilan. Tidak terlalu mengandalkan flash.event. * Dan malah menulis sistem passing pesan saya sendiri, tidak terikat terutama pada bahasa atau platform. Saya baru-baru ini menyelesaikan permainan menggunakan kerangka kata dan ingin melihat apakah akan mudah untuk porting ke C # (Bahasa yang saya tahu sebanyak itu mirip dengan Java dan AS3) sebagai proyek 3D Unity. Ternyata, ini jauh lebih sukses! Karena saya berpikir lebih lancar dalam AS3 daripada di C #, memiliki algoritma yang sudah ditulis menghemat waktu satu ton. Yang harus saya lakukan hanyalah mengubah sintaks, yang bukan

Jadi, hanya dalam pengalaman pribadi saya, saya tidak bisa mengatakan jawabannya selalu ya atau tidak. Anda harus memperhitungkan seberapa tergantung pada idiom bahasa tertentu Anda kebetulan berada dalam bahasa pilihan tingkat tinggi Anda, dan apakah menciptakan kembali itu akan mudah atau sulit di C.

scriptocalypse
sumber
Kisah kedua Anda menggambarkan bagaimana perasaan saya. Saya akan mencoba untuk menjaga implementasi prototipe generik dan sihir / tipuan gratis, sehingga sebagian besar jika tidak semua ide dapat diterjemahkan ke dalam C. Lebih mudah dikatakan daripada dilakukan, tapi saya pikir pada tingkat yang cukup tinggi masih membawa. Jelas iblis ada dalam perinciannya.
Mark Canlas
@Mark Canlas "iblis ada di detail." Benar. Saya pikir itu mungkin bahwa upaya pertama Anda mungkin serba salah jika Anda belum pernah mem-porting kode antar bahasa atau lingkungan sebelumnya hanya karena sulit untuk meramalkan semua masalah potensial sampai Anda menjumpainya.
scriptocalypse
2

Saya pikir akan sangat berharga untuk memulai dengan pseudocode. Menulis prototipe dalam bahasa lain sepertinya membuang-buang waktu, karena bahasa tingkat tinggi Anda tidak mungkin diterjemahkan ke 'C' hampir seperti halnya pseudocode.

Selain itu, dengan menggunakan pseudocode, Anda akan mengembangkan pemahaman yang lebih baik tentang bagaimana sebenarnya sistem Anda bekerja.

Selama periode waktu yang sama ketika Anda mengerjakan pseudocode, Anda harus mempelajari C. Kemudian, pada saat Anda selesai dengan perencanaan Anda, Anda mungkin siap untuk benar-benar mengimplementasikannya.

Karena alasan yang Anda usulkan untuk menulisnya dalam bahasa lain adalah untuk membantu agar desainnya berjalan, Anda mungkin ingin menggunakan beberapa diagram UML atau semacamnya untuk Anda mulai.

Casey Patton
sumber
2

Anda dapat membuat prototipe algoritme - memperbaiki kesalahan desain logika inti, menggunakan bahasa yang pasti "sangat tinggi" (katakanlah, Matlab, mungkin Ruby). Gunakan untuk membuktikan bahwa algoritma Anda berfungsi, dan berfungsi dengan benar, lalu implementasikan dari awal dalam bahasa "tingkat rendah".

Anda tidak akan mendapatkan banyak jika Anda memilih C ++ atau bahkan Java atau C # sebagai "tingkat tinggi" dan C sebagai "tingkat rendah" karena keuntungan dalam keterbacaan tidak akan signifikan dan "terjemahan" akan tetap sangat menyakitkan dan cukup bug- Rentan. Idenya adalah intinya, mesin proyek Anda dalam implementasi tingkat tinggi tidak boleh menempati lebih dari satu atau dua layar, mudah dipahami, mudah dibaca, dan semua peringatan menjadi jelas menyakitkan - pada dasarnya, sebuah blok kerja, runnable diagram.

SF.
sumber
2

Mesin basis data kebanyakan menangani penanganan I / O tingkat rendah secara optimal dan menangani struktur kompleks seperti b-tree dan daftar terkait secara efisien.

Jadi ini jelas merupakan masalah C / C ++, walaupun ada beberapa implementasi Java yang cukup bagus di luar sana.

Mengembangkan algoritma yang benar yang berkinerja baik jauh lebih mudah dalam bahasa tingkat yang lebih tinggi. Ini biasanya kasus mencoba beberapa variasi dan membandingkan hasilnya. Anda kemudian bisa menerjemahkan algoritme "menang" menjadi C.

Solusi kompromi dapat dengan menulis implementasi awal di salah satu bahasa JVM tingkat yang lebih tinggi (Jython, Groovy datang ke pikiran) dan kemudian memindahkan kelas demi kelas ke Jawa ketika implementasi stabil.

James Anderson
sumber
2

Saya tidak berpikir itu biasa, tetapi sudah dilakukan. Salah satu arsitek paling tajam yang pernah bekerja dengan saya melakukan pemodelannya dengan Python dan kemudian mengimplementasikan kode itu dalam C ++.

Secara umum untuk membuat ini bermanfaat, saya pikir Anda benar-benar harus melakukan algoritma yang kompleks dan sangat dioptimalkan yang tidak mudah diungkapkan secara langsung dalam bahasa target. Untuk sebagian besar situasi "dunia nyata / bisnis", relatif mudah untuk mengekspresikan maksud tingkat tinggi dalam bahasa yang sama yang kita targetkan, dan implementasi dalam bahasa tersebut memenuhi persyaratan kinerja kita sehingga tidak perlu / keinginan untuk membuat model dalam bahasa yang lebih tinggi. bahasa tingkat

Mengingat situasi Anda, di mana Anda memiliki pengetahuan yang lebih baik tentang bahasa tingkat yang lebih tinggi, saya bisa melihat metodologi ini bekerja dengan baik dalam jangka pendek. Itu tidak hanya akan memberi Anda peta jalan untuk menjaga segala sesuatunya tetap berada di jalurnya, tetapi jika Anda memiliki pertanyaan, Anda akan dapat bertanya dengan lebih teliti.

pengguna29776
sumber
1

Saat ini saya sedang mengerjakan proyek yang ditulis dalam C "karena kinerja" (ini adalah motivasi asli), tetapi memang jika diprofilkan itu mengungkapkan bahwa ia menghabiskan sebagian besar waktunya menunggu sistem lain (DB, aplikasi lain yang ditulis dalam Java, "acara" pada soket).

Jika Anda menggunakan algoritma yang salah Anda mendapatkan kinerja yang buruk di C juga (misalnya jika Anda melakukan pencarian linear untuk kunci, "karena C tidak memiliki tabel hash dan kami tidak ingin menggunakan perpustakaan lain", Anda menjadi lebih lambat daripada jika Anda lakukan dengan bahasa yang memiliki tabel hash atau sejenisnya seperti C ++, Java, C #, Python ... dan seterusnya).

Jika Anda dipaksa untuk melakukannya di C untuk alasan apa pun, maka prototyping dalam bahasa lain yang Anda tahu bagi saya bukan ide yang buruk hanya jika Anda prototipe mengetahui "masalah" mana yang akan Anda lakukan dalam implementasi C yang sebenarnya, itu sulit jika Anda tidak percaya diri dengan C. (Anda akan segera menemukan misalnya bahwa C / C std libs tidak memiliki wadah, hanya array "biasa"; Anda memerlukan pustaka non-std). Apalagi C bukan OO, jadi jika Anda membuat prototipe dengan gaya OO, itu akan lebih sulit.

Ringkasnya, hal terbaik yang harus dilakukan adalah melakukan implementasi aktual dalam bahasa "prototyping" Anda, dan kemudian, jika benar-benar diperlukan, tulis fungsi intensif CPU dalam C, tetapi jika hanya C yang dapat diterima, pelajari lebih baik sebelum melakukan prototipe dalam bahasa lain bahasa dan tentu saja sebelum menulis implementasinya.

ShinTakezou
sumber
1

Ada banyak aplikasi penting kinerja yang ditulis dalam bahasa tingkat yang lebih tinggi.

Saya telah memprogram di Assembler dan C di masa lalu, dan walaupun rasanya agak keren dekat dengan logam, penggunaannya sangat terbatas saat ini.

Ada begitu banyak hal yang akan menghambat kinerja, sehingga saya ragu Anda akan mencapai bagian di mana bahasa itu sendiri adalah faktor pembatas. Ini mengingat itu adalah C vs C #.

Misalnya Anda mendapatkan peningkatan kinerja 10% -15% berdasarkan bahasa. Ini tidak seberapa dibandingkan dengan peningkatan pesanan dalam mendapatkan algoritma yang benar diimplementasikan.

Ketika Anda memprogram dalam C #, Anda akan memiliki lebih banyak waktu untuk berkonsentrasi pada arsitektur dan implementasi algoritma / struktur data sehingga mengarah pada optimasi tingkat yang lebih tinggi.

Di dunia nyata Anda selalu dibatasi waktu, jadi habiskan waktu Anda di bagian kanan proyek.

Boris Yankov
sumber
0

Saya ingin tahu apa rencana Anda untuk benar-benar membuatnya di C? Apakah Anda akan prototipe dan kemudian belajar C, dan kemudian kembali kode dalam C? Bagi saya, ini agak mirip dengan pepatah "mata menjadi lebih besar daripada perut" yang saya pikir banyak programmer terjebak ketika belajar teknologi baru (saya tahu saya punya). Maksud saya adalah Anda mencoba mendesain sesuatu yang jelas-jelas sensitif terhadap kinerja tanpa mengetahui seluk beluk bahasa yang menurut Anda perlu ditulis, pada dasarnya Anda ingin sudah mulai merancang aplikasi C sebelum Anda tahu C kapan waktu lebih baik dihabiskan untuk belajar C dan kemudian Anda dapat memperoleh lebih banyak wawasan tentang cara menulis aplikasi yang Anda inginkan. Mungkin saya salah mengira pertanyaan dan Anda bermaksud menyerahkan ini ke programmer lain untuk membangun program di C,

programmx10
sumber
Terkadang "Jangan lakukan itu." adalah jawaban yang benar untuk "Bagaimana saya melakukan X?"
Larry Coleman
0

Prototyping dilakukan, kadang-kadang, untuk mendapatkan pemahaman tentang masalah yang Anda coba selesaikan. Dan terkadang, untuk mengenal teknologi yang mendasari jika Anda belum terbiasa dengannya.

Untuk kasus yang disebutkan, Anda mempertimbangkan untuk membuat prototipe dalam bahasa scripting, katakanlah, python dan untuk membuat kode aktual dalam C.

Mengevaluasi beberapa kemungkinan:

1 . Anda membuat prototipe dengan python dan menulis perangkat lunak dalam C.

Prototyping dalam bahasa scripting dapat membantu di mana Anda ingin memeriksa output terhadap input dengan cepat . Ini berguna jika Anda terutama perlu menguji logika Anda untuk menyelesaikan masalah. Juga berguna jika Anda ingin cepat membuat demo untuk orang lain.

Kode apa pun yang Anda tulis dengan python tidak akan digunakan dalam perangkat lunak akhir. Tetapi, ini dapat membantu jika Anda memberikan prototipe kepada seseorang yang dapat membaca python dan menulis dalam C. Di sini, prototipe dapat membantu mengomunikasikan ide .

Metode ini sesuai untuk menguji kelayakan logis dari solusi.

2 . Anda membuat prototipe dalam C dan menulis perangkat lunak dalam C.

Prototyping dalam C, yang baru bagi Anda, memiliki dua keunggulan. Satu, saat Anda menulis prototipe, Anda bisa memahami bagian-bagian yang relevan dari bahasa , perpustakaan, API, perangkap, dll. Dua, saat Anda membangun perangkat lunak akhir, Anda dapat mulai dari prototipe itu sendiri yang menghemat waktu Anda dan menggunakan kembali kode .

Metode ini cocok untuk menguji kelayakan logis dan teknologi dari solusi.

3 . Anda dapat mempertimbangkan cara non-coding untuk membuat prototipe tergantung pada masalah yang dihadapi.

Jika itu sepotong logika dan ide yang ingin Anda prototipe; kode pseudo , diagram alur , dan blok diagram di atas kertas juga bagus.

Jika ini adalah prototipe UI, pertimbangkan beberapa alat mock-up UI atau kertas.

Amol
sumber
0

Saya pikir Anda harus membuat prototipe dalam bahasa yang Anda kenal (Pytho / Ruby / C # apa yang tidak) sehingga:

  1. Anda memanfaatkan fasilitas / perpustakaan yang disediakan oleh bahasa.
  2. Anda menghabiskan waktu untuk menentukan pilihan desain alih-alih keterbatasan bahasa.

Kemudian, Anda dapat menggunakan alat profil untuk menemukan area leher botol. Implement ulang dalam C / C ++. Ulangi langkah di atas beberapa kali, siapa tahu prototipe Anda mungkin 'cukup cepat'!

KGA
sumber
0

Saya tidak berpikir Anda mendapatkan apa pun dengan pendekatan yang Anda jelaskan, dan beberapa orang telah menjelaskan alasannya secara mendetail.

Salah satu proyek yang saya telah terlibat, menggunakan pendekatan semacam ini: pengembangan perpustakaan matematika untuk arsitektur Cell / BE dan Power7. Fungsi-fungsi dimodelkan dalam Haskell (menggunakan CoCoNUT), dan fungsi output dalam perakitan yang dioptimalkan untuk arsitektur target tertentu.

Dalam hal ini tujuannya adalah kinerja tinggi dengan instruksi perakitan yang disesuaikan dan kemampuan untuk menargetkan beberapa arsitektur.

Makanan untuk meskipun, saya harap Anda tidak kelaparan :)

Stephen
sumber
0

Untuk mesin basis data berkinerja tinggi, Anda mungkin perlu:

  • multi-threading,
  • manajemen memori eksplisit,
  • pemberitahuan asinkron,
  • semafor atau primitif sinkronisasi,
  • akses mudah ke fungsi sistem file tingkat rendah.

Algoritma yang Anda pilih sangat penting untuk kinerja.

Saran umum adalah mulai dengan bahasa tingkat tinggi, kemudian bermigrasi hanya bit yang perlu dioptimalkan ke bahasa tingkat rendah.

Namun , bahasa tingkat tinggi yang Anda pilih harus dapat mendukung algoritma yang Anda butuhkan untuk menulis: dan algoritma yang efisien di sini pada akhirnya mungkin didominasi oleh kontrol threading, penggunaan memori yang efisien, dan penggunaan operasi sistem file tingkat rendah terbaik. tersedia. Jadi, jika tujuan akhirnya adalah kinerja, Anda tidak dapat membuat prototipe dalam bahasa yang tidak mendukung primitif yang perlu Anda gunakan.

Jika Anda perlu menguji prototipe Anda (atau orang lain perlu mengembangkan perangkat lunak terhadap antarmuka-nya), Anda juga perlu bekerja dalam bahasa yang mendukung API yang dimaksud. Anda kemudian dapat mengizinkan orang lain untuk menguji kode mereka dan melakukan tes regresi Anda sendiri sambil mengoptimalkan.

Pertimbangan ini mungkin mengesampingkan banyak bahasa untuk prototipe tingkat tinggi dalam kasus ini - dan mungkin semua yang Anda sebutkan (kecuali mungkin C #). Tetapi Anda tentu saja dapat, pseudo-code dalam bahasa apa pun (termasuk bahasa Inggris) dan, jika perlu, Anda dapat membuat prototipe bagian-bagian proyek (misalnya mengurutkan fungsi) dalam bahasa pilihan Anda.

Hubungan yang erat antara C ++ dan C (dan perbedaan kinerja yang dapat diabaikan) berarti bahwa ada sangat sedikit alasan untuk tidak memilih C ++ daripada C dalam produk akhir.

(Saya menjawab dengan asumsi bahwa Anda memerlukan mesin database berkinerja tinggi untuk tujuan tertentu: jika niat Anda lebih sederhana maka mungkin Anda akan mengambil mesin yang ada dari rak).

MZB
sumber
-2

Saya pikir ketenaran C sangat layak, karena produk Unix yang luar biasa ditulis dalam C. Namun, dibandingkan dengan orang yang tahu C terbaik, saya cukup skeptis tentang mengapa itu harus digunakan. Dikatakan bahwa Ken Thompson (setelah menulis versi pertama Unix dalam bahasa assembly) mulai menulis Unix dalam Fortran, tetapi menyerah setelah seminggu atau sebulan, dan mulai menggunakan C yang sedang dikembangkan oleh rekannya Ken Ritchie di waktu yang sama.

Saya terkejut membaca baru-baru ini bahwa Fortran lebih cepat daripada C dan C ++.

Richard Mullins

richard mullinsq
sumber
1
bagaimana ini menjawab pertanyaan yang diajukan?
Agak