Wednesday 23 August 2017

C ++ rata rata bergerak


Saya telah mengambil kelas di C dan saya telah belajar sedikit dari itu sendiri dan saya pikir Im pada titik di mana saya bisa membuat beberapa program sederhana (lebih dari hanya beberapa ratus baris kode seperti contoh buku) tapi saya tidak Punya ide bagus untuk program apa? Saya mulai menulis kode untuk RPG berbasis teks tapi saya ingin mencoba sesuatu yang lebih mirip dengan programer aktual yang memprogram kode kehidupan. Siapa pun yang bekerja di lapangan punya saran Di forum Lounge ada beberapa ide. Berikut adalah beberapa: hrm. Saya mungkin menyarankan bagian yang ditambahkan untuk gagasan proyek. Salah satu hal yang selalu saya hadapi saat belajar bahasa baru adalah menemukan proyek yang akan menguji pengetahuan saya tanpa mengetahui apa yang telah saya baca atau pahami. (Sementara itu menjadi sesuatu yang menyenangkan dan menghibur untuk dipraktikkan) Sesuatu yang memberi saya semacam hadiah, seperti telah menulis sebuah program yang benar-benar dapat saya manfaatkan untuknya.) Bagian di mana Proyek dapat diajukan, disertai dengan kesulitan atau Beberapa cara untuk mengetahui urutan mana yang paling baik dilakukan adalah ide bagus. Saya tahu ini mungkin tidak banyak membantu anda icemanfan. Tapi mungkin bisa membantu orang seperti saya yang baru mulai C. Inilah daftar saya yang saya buat. hehe. Saya terjebak di nomor 22. lolz. Tidak bisa mendapatkan kelas semacam bubble bodoh untuk bekerja seperti 2 malam sekarang. Mendesah Pemula 1. Tuliskan sebuah program yang menemukan faktorial dari suatu angka yang dimasukkan oleh pengguna. (Periksa semua kondisi) (Pemula). 2. Kembangkan sebuah program untuk mengkonversi mata uang X ke mata uang Y dan sebaliknya (pemula). 3. Tuliskan sebuah program yang mencetak sebagai berikut, pengguna akan memasukkan nomor teratas: 4. Tuliskan sebuah program yang mencetak sebagai berikut, pengguna akan memasukkan nomor terbawah: 5. Tuliskan sebuah program yang menampilkan segitiga berikut, pengguna Akan memasukkan nomor terbawah: 6. Kembangkan sebuah program yang menggunakan nomor yang dibuat secara acak untuk memilih 1 dari 3 (atau lebih) fungsi untuk menampilkan pengguna. (Beginner) 7. Menebak permainan. Tulis permainan c yang meminta pengguna menebak angka antara 1 dan 100. Jika Anda menebaknya dengan benar, itu akan mengatakan bahwa Anda menang. Jika terlalu tinggi atau terlalu rendah, itu juga akan memberi tahu Anda. (Beginner) 8. Buat sebuah program yang menghasilkan deret Fibonacci sampai angka n dimana n dimasukkan oleh pengguna. Misalnya. Jika pengguna memasukkan 10 maka hasilnya adalah: 1 1 2 3 5 8 (Pemula) 9. Tentukan berapa banyak karakter yang menjadi huruf hidup dan berapa banyak konsonan dalam garis teks tertentu. Juga batalkan string saat karakter input yang ditemui selain abjad. (Pemula). 10. Temukan akar Kelima dari jumlah kuadrat dari 100 nomor ODD pertama saja. (Beginner) 11. Lakukan 4 huruf WORD UNSCRAMBLING i. e. Buat daftar semua kemungkinan kombinasi 4 huruf dalam satu kata. Contoh: Kata TEST dapat diurai sebagai TEST, TETS, TSET, TSTE, TTSE, TTES, dll. (Pemula) 12. Buatlah program yang memungkinkan pengguna untuk memasukkan radius, diameter, atau area lingkaran. Program kemudian harus menghitung 2 input lainnya. (Pemula) 13. Bacalah baris teks dan TULISKAN BACKWARDS menggunakan Fungsi RECURSIVE. (Beginner) 14. Tulis sebuah program untuk SWAP isi 3 variabel tanpa menggunakan variabel sementara (atau ekstra). (Beginner) 15. Tulis sebuah program yang membalikkan angka dalam bilangan bulat, yaitu 326 menjadi 623, dll. (Pemula) 16. Program ini akan memberitahu pengguna setiap saat apakah dia menduga tinggi atau rendah. Pengguna MENANG permainan ketika jumlah yang ditebak sama dengan nomor yang dihasilkan secara acak. (Beginner) 17. Tulis sebuah program untuk mensimulasikan kalkulator sederhana. Ini harus menerima dua nomor dari pengguna bersamaan dengan operasi yang dibutuhkan untuk dilakukan. Penambahan, Pengurangan, Pembagian dan Perkalian adalah operasi dasar yang harus dilaksanakan. Merasa bebas untuk menerapkan operasi lainnya (Beginner) 18. Tentukan berapa banyak uang yang ada di celengan yang berisi beberapa 50 paise coins, 25 paise coins, 20 paise coins, 10 paise coins dan 5 paise coins. Gunakan nilai berikut untuk menguji program Anda. Lima 50 paise coins, Tiga 25 paise coins, Dua 20 paise coins, One 10 paise coin dan Fifteen 5 paise coins. (Beginner) 19. Buat program checker Palindrome sederhana. Program harus memungkinkan pengguna untuk memasukkan string dan memeriksa apakah string yang diberikan adalah palindrom atau tidak. Hanya angka dan abjad yang harus dipertimbangkan saat memeriksa palindrom - karakter lainnya harus diabaikan. (Pemula) 20. Tuliskan sebuah program yang memungkinkan Anda memasukkan nilai dan bobot siswa. Program kemudian harus menghitung rata-rata tertimbang dan skor berdasarkan data yang diinput oleh pengguna. (Beginner) Intermediate 21. Tulis sebuah program yang akan mencetak semua pasangan bilangan prima yang jumlahnya sama dengan angka yang dimasukkan oleh pengguna. (Disarankan oleh Aniseed) (Intermediate) 22. Kembangkan program klasifikasi hewan berdasarkan kerajaan hewan. (Untuk praktek penggunaan kelas penduduk). 23. Tuliskan program kuis, yang mengambil pertanyaan, dan jawab dari sebuah file. Kemudian memungkinkan pengguna untuk mengambil titik quizcount dan skor kembali. (Intermediate) 24. Tulis sebuah program yang menerima XHTML, mem-parsing dan menghapus tag. Kemudian print out teks yang tersisa. (Intermediate) 25. Tuliskan sebuah program yang melakukan penambahan, pengurangan, perkalian matriks. Dimensi kedua matriks tersebut akan ditentukan oleh pengguna (alokasi memori dinamis yang dibutuhkan). Penggunaan struktur atau kelas untuk mendefinisikan matriks akan menjadi ide bagus. (Intermediate) 26. Tulis sebuah program yang akan melakukan tugas memindahkan file dari satu lokasi ke lokasi lainnya. Jalur sumber dan tujuan akan dimasukkan oleh pengguna. Lakukan pengecekan kesalahan yang diperlukan dan pegang perkecualian yang sesuai. (Intermediate) 27. Buat kelas linked list yang canggih. Anda harus bisa memasukkan dan menghapus node di manapun dalam daftar, dan node harus memiliki pointer ke node baik di depan dan di belakangnya. (Intermediate) 28. Buat sebuah program yang mengimplementasikan database di C. Bidang-bidang tersebut diberi kode keras, dan datanya tersimpan dalam file biner. Meskipun ini bukan fleksibilitas, Anda tidak bergantung pada perpustakaan atau fungsi eksternal manapun. (Intermediate) Pakar 1. Laksanakan strstr Anda sendiri. 2. Tulis sebuah program yang bertingkah laku seperti perencana pribadi. Di mana pengguna bisa masuk dalam acara, perhatikan hal yang harus dilakukan pada tanggal tertentu. 3. Program Tic Tac Toe. 4. Enkripsi file sederhana (menggunakan sesuatu yang sederhana seperti ROT13 5. Tuliskan program buku telepon, dengan menyimpan data dalam file biner. Para pengguna harus dapat menambahkan data dari data 6. Menulis program penggajian sederhana, yang mencakup tingkat upah , Dan jam kerja untuk karyawan 7. Buat beberapa kelas model bermain kartu lalu gunakan framework ini untuk membuat game kartu favorit anda Blackjack..etc (expert) 8. Buat beberapa kelas yang model potongan catur. (Ahli) 9. Buat pohon biner yang memiliki fungsi pencarian dan pemilahan. (Pakar) 10. Buat sebuah Quine, yaitu sebuah program yang mencetak kode sumbernya sendiri. (Ahli) 11. Terapkan sendiri Versi Perpustakaan Standar Template (Pakar) Grafik 1. Tuliskan sebuah program untuk menggambar persegi panjang, elips, persegi, lingkaran, titik dan garis berdasarkan masukan pengguna. (Pemula) 2. Tuliskan program untuk meniru Microsoft Paint. Dimungkinkan untuk beralih di antara alat yang berbeda (lingkaran, persegi panjang, penghapus.) Menggunakan pra-de Duri kunci yang didenda. Intermediate 3. Tulis sebuah program untuk merencanakan grafik x-y sederhana untuk fungsi yang difotkan (misalnya ycos (x)). Ini memungkinkan untuk memperbesar bagian grafik manapun. - Intermediate. 4. Tulis sebuah program untuk merencanakan grafik persamaan bentuk yf (x) dan rentang untuk x sebagai argumen baris perintah. (Misalnya mygraphplotter - eqyxx - xmin-10, - xmax10) - Pakar. (PS: lebih berkaitan dengan penyelesaian persamaan daripada grafis) 5. Tulis permainan bata-break-out klasik. Misalnya. Lihat DX Ball Ahli. Last edited on Aug 11, 2008 at 3:04 am UTCGenerally, C dan Java bisa sama cepat atau cepat karena kompiler JIT - kompilator yang mengkompilasi IL Anda saat pertama dijalankan - dapat melakukan pengoptimalan yang dikompilasi oleh C Tidak bisa karena bisa query mesinnya. Ini bisa menentukan apakah mesinnya adalah Intel atau AMD Pentium 4, Core Solo, atau Core Duo atau jika mendukung SSE4, dll. Program AC harus dikompilasi sebelumnya biasanya dengan optimasi campuran sehingga berjalan dengan baik pada semua mesin, namun tidak Dioptimalkan sebanyak mungkin untuk satu konfigurasi (yaitu prosesor, set instruksi, perangkat keras lain). Selain itu fitur bahasa tertentu memungkinkan compiler di C dan Java membuat asumsi tentang kode Anda yang memungkinkannya mengoptimalkan bagian-bagian tertentu yang hanya sesuai untuk kompilator CC. Bila Anda memiliki akses ke pointer ada banyak pengoptimalan yang hanya bisa dilakukan dengan aman. Juga Java dan C dapat melakukan alokasi tumpukan lebih efisien daripada C karena lapisan abstraksi antara pengumpul sampah dan kode Anda memungkinkannya melakukan semua kompresi heapnya sekaligus (operasi yang cukup mahal). Sekarang saya tidak bisa berbicara untuk Java pada poin berikutnya, tapi saya tahu bahwa C misalnya akan benar-benar menghapus metode dan pemanggilan metode saat mengetahui isi dari metode ini kosong. Dan itu akan menggunakan logika semacam ini di seluruh kode Anda. Jadi seperti yang Anda lihat, ada banyak alasan mengapa implementasi C atau Java tertentu akan lebih cepat. Sekarang semua ini mengatakan, pengoptimalan spesifik dapat dilakukan di C yang akan meniup apa pun yang dapat Anda lakukan dengan C, terutama di dunia grafis dan kapan pun Anda dekat dengan perangkat keras. Pointer melakukan keajaiban di sini. Jadi tergantung pada apa yang Anda tulis saya akan pergi dengan satu atau yang lain. Tapi jika youre menulis sesuatu yang tidak tergantung hardware (driver, video game, dll), saya tidak khawatir dengan performa C (lagi cant berbicara tentang Java). Tidak apa-apa. Salah satu sisi Java, Swati menunjukkan sebuah artikel bagus: JIT vs Static Compiler Seperti yang sudah dikatakan di posting sebelumnya, JIT dapat mengkompilasi ILbytecode menjadi kode asli saat runtime. Biaya yang disebutkan, tapi tidak sampai pada kesimpulannya: JIT memiliki satu masalah besar adalah tidak dapat mengkompilasi semuanya: kompilasi JIT memerlukan waktu, jadi JIT hanya akan mengkompilasi beberapa bagian kode, sedangkan kompiler statis akan menghasilkan penuh Biner asli: Untuk beberapa jenis program, kompiler statis akan dengan mudah mengungguli JIT. Tentu saja, C (atau Java, atau VB) biasanya lebih cepat menghasilkan solusi yang layak dan kokoh daripada C (jika hanya karena C memiliki kompleks semantik, dan perpustakaan standar C, sementara menarik dan kuat, cukup buruk bila dibandingkan dengan yang penuh. Ruang lingkup perpustakaan standar dari atau Jawa), jadi biasanya, perbedaan antara C dan atau Java JIT tidak akan terlihat oleh kebanyakan pengguna, dan untuk binari yang sangat penting, Anda masih dapat memanggil pemrosesan C dari C atau Java (bahkan Jika panggilan asli semacam ini bisa sangat mahal harganya). C metaprograming Perhatikan bahwa biasanya, Anda membandingkan kode runtime C dengan ekuivalennya di C atau Java. Tapi C memiliki satu fitur yang bisa mengungguli JavaC di luar kotak, yaitu template metaprograming: Pengolahan kode akan dilakukan pada waktu kompilasi (dengan demikian, semakin banyak waktu kompilasi), menghasilkan runtime nol (atau hampir nol). Saya belum pernah melihat efek kehidupan nyata dalam hal ini (saya hanya bermain dengan konsep, tapi saat itu, perbedaannya adalah detik eksekusi untuk JIT, dan nol untuk C), tapi ini layak disebut, di samping template metaprogram fakta tidak sepele. Edit 2011-06-10: Di C, bermain dengan jenis dilakukan pada waktu kompilasi, yang berarti memproduksi kode generik yang memanggil kode non-generik (misalnya parser generik dari string ke tipe T, memanggil API perpustakaan standar untuk tipe T yang dikenali, Dan membuat parser mudah diperluas oleh penggunanya) sangat mudah dan sangat efisien, sedangkan yang setara di Jawa atau C sangat menyakitkan untuk menulis, dan akan selalu lebih lambat dan diselesaikan pada saat runtime meskipun jenisnya diketahui pada waktu kompilasi, Yang berarti satu-satunya harapan Anda adalah JIT menyatukan semuanya. Edit 2011-09-20: Tim di balik Blitz (Homepage. Wikipedia) pergi ke arah sana, dan tampaknya, tujuan mereka adalah untuk mencapai kinerja FORTRAN pada perhitungan ilmiah dengan memindahkan sebanyak mungkin dari eksekusi runtime ke waktu kompilasi, melalui template template metaprogramming . Jadi saya belum begitu melihat efek kehidupan nyata pada bagian ini yang saya tulis di atas tampaknya memang ada dalam kehidupan nyata. Penggunaan Memori C Asli C memiliki penggunaan memori yang berbeda dari JavaC, dan karenanya memiliki kelebihan keuntungan yang berbeda. Tidak masalah optimasi JIT, tidak ada yang akan berjalan cepat seperti akses pointer langsung ke memori (mari kita abaikan sejenak cache prosesor, dll.). Jadi, jika Anda memiliki data bersebelahan di memori, mengaksesnya melalui pointer C (yaitu pointer C) Mari memberi Caesar tugasnya) akan berjalan lebih cepat daripada di JavaC. Dan C memiliki RAII, yang membuat banyak pengolahan jauh lebih mudah daripada di C atau bahkan di Jawa. C tidak perlu menggunakan ruang lingkup keberadaan benda-bendanya. Dan C tidak memiliki klausa akhirnya. Ini bukan sebuah kesalahan. Dan meskipun C seperti struktur primitif, C pada objek stack tidak akan menghabiskan biaya apapun dengan alokasi dan penghancuran, dan tidak memerlukan GC untuk bekerja dalam thread independen untuk melakukan pembersihan. Sedangkan untuk fragmentasi memori, pengalokasi memori pada tahun 2008 bukanlah pengalokasi memori lama dari tahun 1980 yang biasanya dibandingkan dengan alokasi GC: C tidak dapat dipindahkan ke memori, benar, tapi kemudian, seperti pada filesystem Linux: Siapa yang butuh defragmentasi hard disk saat Fragmentasi tidak terjadi Menggunakan pengalokasian benar untuk tugas yang benar harus menjadi bagian dari toolkit pengembang C. Sekarang, pengalokasian penulisan tidak mudah, dan kemudian, kebanyakan dari kita memiliki hal-hal yang lebih baik untuk dilakukan, dan untuk penggunaan paling banyak, RAII atau GC lebih dari cukup baik. Edit 2011-10-04: Sebagai contoh tentang pengalokasi yang efisien: Pada platform Windows, karena Vista, Low Fragmentation Heap diaktifkan secara default. Untuk versi sebelumnya, LFH dapat diaktifkan dengan memanggil fungsi WinAPI HeapSetInformation). Di OS lain, pengalokasi alternatif disediakan (lihat secure. wikimedia. orgwikipediaenwikiMalloc untuk sebuah daftar) Sekarang, model memori agak menjadi lebih rumit dengan munculnya teknologi multicore dan multithreading. Di bidang ini, saya rasa memiliki keuntungan, dan Jawa, saya diberi tahu, memegang tanah bagian atas. Mudah bagi beberapa orang di hacker logam telanjang untuk memuji kode mesinnya di dekat situ. Tapi sekarang, cukup sulit untuk menghasilkan perakitan yang lebih baik dengan tangan daripada membiarkan kompilator melakukan tugasnya. Bagi C, compiler menjadi lebih baik daripada hacker sejak satu dekade. Untuk C dan Java, ini lebih mudah. Namun, standar baru C0x akan menerapkan model memori sederhana ke kompiler C, yang akan menstandardisasi (dan menyederhanakan) kode multiprosesing multipel yang efektif dalam C, dan membuat pengoptimalan lebih mudah dan aman bagi kompiler. Tapi kemudian, lihatlah dalam beberapa tahun lagi jika janjinya benar. CCLI vs CVB Catatan: Pada bagian ini, saya berbicara tentang CCLI, yaitu C yang di-host oleh, bukan C. asli. Pekan lalu, saya mendapat pelatihan tentang pengoptimalan, dan menemukan bahwa kompilator statis sangat penting. Sama pentingnya dengan JIT. Kode yang sama yang dikompilasi di CCLI (atau nenek moyangnya, Managed C) bisa kali lebih cepat dari kode yang sama yang dihasilkan di C (atau VB, yang kompilatornya menghasilkan IL yang sama dari pada C). Karena kompiler statis C jauh lebih baik menghasilkan kode yang sudah dioptimalkan daripada Cs. Misalnya, fungsi inlining in terbatas pada fungsi yang bytecodenya kurang atau sama dengan 32 byte. Jadi, beberapa kode di C akan menghasilkan accessor 40 byte, yang tidak akan pernah digaris bawahi oleh JIT. Kode CCLI yang sama akan menghasilkan accessor 20 byte, yang akan digaris bawahi oleh JIT. Contoh lain adalah variabel sementara, yang hanya dikompilasi oleh kompiler C sementara masih disebutkan dalam IL yang dihasilkan oleh kompiler C. C optimasi kompilasi statis akan menghasilkan kode kurang, sehingga mengotorisasi optimasi JIT lebih agresif, sekali lagi. Alasan untuk ini adalah berspekulasi untuk menjadi kenyataan kompiler CCLI diuntungkan dari teknik optimasi yang luas dari kompiler asli C. Kesimpulan Tapi sejauh yang saya lihat, C atau Java semuanya lebih baik. Bukan karena mereka lebih cepat dari C, tapi karena ketika Anda menambahkan kualitas mereka, mereka akhirnya menjadi lebih produktif, membutuhkan lebih sedikit pelatihan, dan memiliki perpustakaan standar yang lebih lengkap daripada C. Dan seperti kebanyakan program, perbedaan kecepatan mereka (dalam satu Cara atau lainnya) akan diabaikan. Edit (2011-06-06) Pengalaman saya di C Sekarang saya memiliki 5 bulan kode C profesional yang hampir eksklusif (yang menambahkan hingga CV saya sudah penuh dengan C dan Java, dan sentuhan CCLI). Saya bermain dengan WinForms (Ahem.) Dan WCF (keren), dan WPF (Keren keduanya melalui XAML dan raw C. WPF sangat mudah saya percaya Swing tidak dapat dibandingkan dengannya), dan C 4.0. Kesimpulannya adalah bahwa sementara lebih mudah untuk menghasilkan kode yang bekerja di CJava daripada di C, itu jauh lebih sulit untuk menghasilkan kode yang kuat, aman dan kuat di C (dan bahkan lebih keras di Jawa) daripada di C. Alasan berlimpah, tapi Dapat diringkas oleh: Generik tidak sekuat templat (coba tuliskan metode Parse generik yang efisien (dari string ke T), atau setara yang efisien untuk meningkatkan :: lexicalcast di C untuk memahami masalahnya) RAII tetap tak tertandingi (GC masih Dapat bocor (ya, saya harus menangani masalah itu) dan hanya akan menangani memori. Bahkan penggunaan Cs tidak semudah dan kuat karena menulis implementasi Dispose yang benar sulit) C readonly dan Java final sama sekali tidak berguna sebagai const Cs (Theres Tidak mungkin Anda bisa mengekspos data yang mudah dipahami (Tree of Nodes, misalnya) di C tanpa kerja yang luar biasa, sementara fitur built-in dari C. Data yang tidak berubah adalah solusi yang menarik, namun tidak semuanya dapat dibuat tidak dapat diubah, jadi Bahkan tidak cukup, jauh). Jadi, C tetap bahasa yang menyenangkan asalkan Anda menginginkan sesuatu yang berhasil, tapi bahasa frustrasi saat Anda menginginkan sesuatu yang selalu dan aman bekerja. Java bahkan lebih membuat frustrasi, karena memiliki masalah yang sama dengan C, dan banyak lagi: Kurangnya penggunaan kata kunci Cs, rekan yang sangat terampil saya menghabiskan terlalu banyak waktu untuk memastikan sumber dayanya terbebas dengan benar, sedangkan yang setara dengan C akan Sudah mudah (menggunakan destructors dan smart pointers). Jadi saya kira produktivitas CJavas bisa terlihat untuk kebanyakan kode. Sampai hari Anda membutuhkan kode untuk menjadi sesempurna mungkin. Hari itu, kamu akan tahu rasa sakit. (Anda tidak akan percaya apa yang diminta dari server dan aplikasi GUI kami.). Tentang Server-side Java dan C Saya terus berhubungan dengan tim server (saya bekerja 2 tahun di antara mereka, sebelum kembali ke tim GUI), di sisi lain bangunan, dan saya belajar sesuatu yang menarik. Tahun-tahun terakhir, trennya adalah agar aplikasi server Java ditakdirkan untuk menggantikan aplikasi server C lama, karena Java memiliki banyak kerangka kerja kerangka kerja, dan mudah dikelola, diterapkan, dll. Sampai masalah latensi rendah Membesarkan kepalanya yang jelek bulan-bulan terakhir. Kemudian, aplikasi server Java, tidak masalah pengoptimalan yang dilakukan oleh tim Java terampil kami, secara sederhana dan bersih kehilangan perlombaan melawan server C yang lama dan tidak optimal. Saat ini, keputusannya adalah untuk menjaga agar server Java tetap digunakan di mana kinerja tetap penting, tidak diperhatikan oleh target latensi rendah, dan secara agresif mengoptimalkan aplikasi server C yang sudah lebih cepat untuk kebutuhan latensi rendah dan ultra-low-latency. Kesimpulan Tidak ada sesederhana yang diharapkan. Java, dan bahkan lebih C, adalah bahasa yang keren, dengan perpustakaan dan kerangka standar yang luas, di mana Anda dapat kode dengan cepat, dan hasilnya sangat cepat. Tetapi ketika Anda membutuhkan kekuatan mentah, pengoptimalan yang kuat dan sistematis, dukungan kompilator yang kuat, fitur bahasa yang kuat dan keamanan yang mutlak, Java dan C menyulitkan untuk memenangkan kualitas yang hilang namun penting dari kualitas yang Anda butuhkan untuk tetap berada di atas kompetisi. Seolah-olah Anda memerlukan sedikit waktu dan pengembang yang kurang berpengalaman di CJava daripada di C untuk menghasilkan kode kualitas rata-rata, namun disisi lain, saat Anda membutuhkan kode kualitas yang sangat bagus, tiba-tiba lebih mudah dan lebih cepat untuk mendapatkan hasilnya dengan benar. C. Tentu saja, ini adalah persepsi saya sendiri, mungkin terbatas pada kebutuhan spesifik kita. Tapi tetap saja, itulah yang terjadi hari ini, baik di tim GUI maupun tim server-side. Tentu saja, Ill update posting ini jika sesuatu yang baru terjadi. Edit (2011-06-22) Kami menemukan bahwa dalam hal kinerja, C menang dengan margin yang besar. Namun, ini juga memerlukan usaha tuning yang paling luas, banyak di antaranya dilakukan pada tingkat kecanggihan yang tidak akan tersedia bagi pemrogram rata-rata. . Versi Java mungkin yang paling sederhana untuk diimplementasikan, tapi yang paling sulit dianalisis untuk kinerja. Secara khusus efek pengumpulan sampah sangat rumit dan sangat sulit dilakukan. Edit (2011-09-20) Kata yang sedang berjalan di Facebook adalah kode C yang cukup banyak ditulis dengan cepat, yang menggarisbawahi upaya besar yang dihabiskan untuk mengoptimalkan kode PHP dan Java. Paradoksnya, kode C lebih sulit ditulis daripada bahasa lain, tapi kode yang efisien jauh lebih mudah ditulis di C daripada bahasa lain. Pengolahan kode akan dilakukan pada waktu kompilasi. Oleh karena itu template metaprogramming hanya bekerja dalam program tersedia pada waktu kompilasi yang seringkali tidak demikian, mis. Tidak mungkin untuk menulis sebuah perpustakaan ekspresi reguler berkinerja kompetitif di vanili C karena tidak mampu menjalankan kode kode run-time (aspek penting dari metaprogramming). Ndash Jon Harrop Jan 17 12 at 10:08 Setiap kali saya berbicara dengan kinerja yang dikelola dengan tidak dikelola, saya suka menunjuk pada seri Rico (dan Raymond) yang membandingkan versi C dan C dari kamus ChinaEnglish. Pencarian google ini akan membiarkan Anda membaca sendiri, tapi saya menyukai ringkasan Ricos. Jadi aku malu dengan kekalahanku yang menghancurkan Hampir tidak. Kode yang dikelola mendapat hasil yang sangat bagus untuk usaha yang hampir tidak ada. Untuk mengalahkan Raymond yang dikelola harus: Tuliskan filenya sendiri IO stuff Tulis kelas seninya sendiri Tulis pengalokasi sendiri Tulis pemetaan internalnya sendiri Tentu saja dia menggunakan perpustakaan tingkat rendah yang tersedia untuk melakukan ini, tapi masih banyak pekerjaan. Dapatkah Anda menelepon apa yang tersisa program STL saya tidak berpikir begitu, saya pikir dia terus std :: kelas vektor yang akhirnya tidak pernah menjadi masalah dan ia terus menemukan fungsi. Hampir semua hal lainnya hilang. Jadi, yup, Anda pasti bisa mengalahkan CLR. Raymond bisa membuat programnya berjalan lebih cepat lagi. Yang menarik, waktu untuk mengurai file seperti yang dilaporkan oleh kedua program timer internal hampir sama - 30ms untuk masing-masing. Perbedaannya ada di bagian atas. Bagi saya, intinya adalah bahwa dibutuhkan 6 revisi untuk versi yang tidak terkelola untuk mengalahkan versi yang dikelola yang merupakan port sederhana dari kode asli yang tidak dikelola. Jika Anda membutuhkan setiap kinerja terakhir (dan memiliki waktu dan keahlian untuk mendapatkannya), Anda harus pergi tidak terkelola, tapi bagi saya, saya akan mengambil keuntungan besarnya yang saya miliki di versi pertama dari 33 keuntungan saya jika saya Coba 6 kali Pertama-tama, jika kita melihat kode Raymond Chen, dia jelas tidak mengerti struktur data C atau sangat baik. Kodenya hampir mencapai tingkat kode C tingkat rendah bahkan dalam kasus di mana kode C tidak memiliki manfaat kinerja (sepertinya ini adalah semacam ketidakpercayaan dan mungkin kurangnya pengetahuan tentang bagaimana menggunakan profiler). Dia juga gagal memahami cara menerapkan kamus yang paling algoritmik (dia menggunakan std :: find for Christ's sake). Jika ada sesuatu yang baik tentang Java, Python, C, dll - semuanya memberi kamus yang sangat efisien. Ndash stinky472 Feb 28 12 at 18:26 Mencoba atau bahkan std :: peta akan berjalan jauh lebih baik ke arah C atau bahkan tabel hash. Akhirnya, kamus adalah jenis program yang paling banyak mendapatkan manfaat dari perpustakaan dan kerangka tingkat tinggi. Ini tidak menunjukkan perbedaan dalam bahasa sama seperti perpustakaan yang terlibat (yang saya dengan senang hati akan mengatakan bahwa C jauh lebih lengkap dan menyediakan lebih banyak alat yang sesuai untuk tugas itu). Tunjukkan sebuah program yang memanipulasi blok memori yang besar, seperti kode matriks matriks besar. Itu akan menyelesaikan ini dengan cukup cepat meskipun, seperti dalam kasus ini, coders tidak tahu apa. Ndash stinky472 Feb 28 12 at 18:29 Tidak begitu banyak yang Anda kompilasi untuk optimasi CPU, tapi Anda mengkompilasi untuk optimasi jalan runtime. Jika Anda menemukan bahwa metode ini sangat sering disebut dengan parameter tertentu, Anda dapat mengkompilasi ulang rutin itu dengan parameter itu sebagai konstanta yang dapat (dalam kasus boolean yang mengendalikan arus) mengeluarkan potongan kerja raksasa. C tidak bisa mendekati melakukan optimasi semacam itu. Ndash Bill K 9 Okt 09 at 17:42 Jadi bagaimana JIT lakukan saat mengkompilasi ulang rutinitas untuk mengambil keuntungan dari runpath yang diamati, dan berapa banyak perbedaan yang membuat David Thornley pada Dec 3 09 at 21:50 Hardy ya, CPU bisa melakukan branch Prediksi terlepas dari bahasa, tapi tidak dapat memperhitungkan keseluruhan lingkaran dengan mengamati bahwa loop tidak berpengaruh pada apapun. Ini juga tidak akan mengamati bahwa mult (0) terprogram untuk mengembalikan 0 dan hanya mengganti keseluruhan pemanggilan metode dengan if (param 0) result0 dan hindari keseluruhan functionmethod call. C bisa melakukan hal-hal ini jika kompilator memiliki gambaran menyeluruh tentang apa yang terjadi, namun umumnya tidak memiliki cukup info pada waktu kompilasi. Ndash Bill K Sep 8 10 at 17:26 JIT (Just In Time Compiling) bisa sangat cepat karena mengoptimalkan platform target. Ini berarti bahwa hal itu dapat memanfaatkan trik kompilator yang dapat didukung CPU Anda, terlepas dari apa yang pengembang pengembang tuliskan. Konsep dasar JIT bekerja seperti ini (sangat disederhanakan): Memanggil metode untuk pertama kalinya: Kode program Anda memanggil metode Foo () CLR melihat tipe yang mengimplementasikan Foo () dan mendapatkan metadata yang terkait dengannya. Metadata, CLR tahu alamat memori IL (kode byte Intermediate) yang tersimpan. CLR mengalokasikan satu blok memori, dan memanggil JIT. JIT mengkompilasi IL menjadi kode asli, menempatkannya ke dalam memori yang dialokasikan, dan kemudian mengubah pointer fungsi dalam metadata jenis Foo () untuk menunjuk ke kode asli ini. Kode asli dijalankan. Memanggil sebuah metode untuk kedua kalinya: Kode program Anda memanggil metode Foo () CLR melihat tipe yang mengimplementasikan Foo () dan menemukan pointer fungsi dalam metadata. Kode asli di lokasi memori ini adalah berlari. Seperti yang bisa Anda lihat, ke 2 kalinya, prosesnya hampir sama dengan C, kecuali dengan keuntungan dari pengoptimalan real time. Yang mengatakan, masih ada masalah overhead lainnya yang memperlambat bahasa yang dikelola, namun JIT sangat membantu. Nah, ini didasarkan pada gagasan bahwa pengoptimal kompilator mengikuti peraturan, dan coders tidak. Jadi, selalu ada kode yang optimizer merasa bisa mengoptimalkan dengan sempurna, sedangkan manusia bisa, entah dengan melihat gambar yang lebih besar atau mengetahui lebih banyak tentang apa sebenarnya kode yang sebenarnya. Saya akan menambahkan bahwa ini adalah komentar 3 tahun, dan saya tahu lebih banyak tentang HotSpot daripada dulu, dan saya dapat dengan mudah melihat pengoptimalan dinamis menjadi cara yang bagus untuk mendapatkan kode yang berjalan lebih cepat. Ndash billjamesdev 14 Jul 11 ​​at 6:03 1. Optimalisasi dari Hotspot atau JIT lainnya masih merupakan pengoptimalan kompilator. JIT memiliki kelebihan dibandingkan kompiler statis karena bisa menyejajarkan beberapa hasil (kode sering disebut), atau bahkan untuk melakukan optimasi berdasarkan prosesor pelaksana, namun masih merupakan pengoptimalan kompilator. 2. Saya kira Anda berbicara tentang optimasi algoritma, bukan kuota fine tuningquot. Perancangan kuota baik manual oleh coderquot manusia gagal menghasilkan hasil yang lebih baik daripada pengoptimalan kompilator sejak lebih dari satu dekade. Sebenarnya, manusia yang bermain dengan perakitan biasanya menyingkirkan pengoptimalan apa pun. Ndash paercebal 14 Jul 11 ​​at 16:46 Ok, saya mengerti bahwa saya menggunakan terminologi yang salah, optimisasi kuotasi daripada optimisasi kuototik. Saya akan menunjukkan bahwa, setidaknya di industri game, baru-baru ini untuk PS2, kami masih menggunakan perakitan dengan kode tangan di tempat-tempat untuk menentukan kuototisasi untuk chip spesifik yang kami ketahui ada di konsol cross-compilers untuk chip baru ini. Namun sehebat arsitektur x86. Kembali ke pertanyaan awal di atas: JIT memiliki keuntungan untuk dapat mengukur sebelum dioptimalkan, yaitu Good Thing (TM) ndash billjamesdev 14 Juli 11 di 17:53 Anda harus menentukan kinerjanya lebih baik dari ... Nah, saya Ketahuilah, Anda bertanya tentang kecepatan, tapi bukan itu yang penting. Apakah mesin virtual melakukan lebih banyak overhead runtime Ya Apakah mereka makan lebih banyak memori kerja Ya Apakah mereka memiliki biaya startup yang lebih tinggi (inisialisasi runtime dan compiler JIT). Ya Apakah mereka memerlukan sebuah perpustakaan besar yang terpasang Ya Dan seterusnya, biasnya, ya) Dengan C dan Java Anda membayar harga untuk apa yang Anda dapatkan (coding lebih cepat, manajemen memori otomatis, perpustakaan besar dan sebagainya). Tapi Anda tidak punya banyak ruang untuk tawar-menawar tentang rinciannya: ambil paket lengkap atau tidak sama sekali. Bahkan jika bahasa tersebut dapat mengoptimalkan beberapa kode untuk dijalankan lebih cepat daripada kode yang dikompilasi, keseluruhan pendekatannya (IMHO) tidak efisien. Bayangkan mengemudi setiap hari 5 mil ke tempat kerja Anda, dengan truk yang nyaman, rasanya enak, Anda aman (zona crumple yang ekstrim) dan setelah Anda menginjak gas untuk beberapa lama, mobil itu bahkan akan secepat mobil standar. Jangan sampai kita semua punya truk untuk dikendarai) Di C Anda mendapatkan apa yang Anda bayar, tidak lebih, tidak kurang. Mengutip Bjarne Stroustrup: C adalah bahasa sampah favorit saya yang dikumpulkan karena menghasilkan teks tautan sampah yang sangat kecil Stroustrup tidak melihat beberapa kode yang saya miliki. Ndash kyoryu Dec 4 09 at 3:29 Nah, saya pikir dia memiliki ide bagus tentang kekurangannya, dia juga berkata: quotC membuatnya mudah untuk menembak diri sendiri di kaki C membuat lebih sulit, tapi ketika Anda melakukannya, pukulanlah seluruh kaki Anda. Offquot) ndash Frunsi Dec 4 09 at 11:24 quotIn C Anda mendapatkan apa yang Anda bayar, tidak lebih, tidak kurang akurat. Contoh counter: Saya membandingkan implementasi pohon RB di OCaml dan C (GNU GCC) yang menggunakan pengecualian untuk melompat jauh keluar dari rekursi jika elemen yang ditambahkan sudah ada untuk menggunakan kembali set yang ada. OCaml sampai 6x lebih cepat dari C karena tidak membayar untuk memeriksa destruktor karena tumpukannya terlepas. Ndash Jon Harrop 5 September 11 pukul 23:10 Jon: tapi beberapa saat kemudian harus menghancurkan benda-benda itu (setidaknya harus melepaskan ingatannya). Dan perhatikan juga, pengecualian untuk kasus luar biasa, setidaknya di C peraturan itu harus dihormati. Pengecualian C mungkin berat saat terjadi pengecualian, itu adalah trade-off. Ndash Frunsi 6 September 11 di 19:19 Beberapa jawaban yang bagus di sini tentang pertanyaan spesifik yang Anda tanyakan. Id ingin melangkah mundur dan melihat gambar yang lebih besar. Ingatlah bahwa persepsi pengguna Anda terhadap kecepatan perangkat lunak yang Anda tulis dipengaruhi oleh banyak faktor lain daripada seberapa baik codegen tersebut dioptimalkan. Berikut adalah beberapa contohnya: Manajemen memori manual sulit dilakukan dengan benar (tidak bocor), dan bahkan lebih sulit dilakukan secara efisien (memori bebas segera setelah Anda selesai melakukannya). Menggunakan GC secara umum lebih cenderung menghasilkan program yang mengelola memori dengan baik. Are you willing to work very hard, and delay delivering your software, in an attempt to out-do the GC My C is easier to read amp understand than my C. I also have more ways to convince myself that my C code is working correctly. That means I can optimize my algorithms with less risk of introducing bugs (and users dont like software that crashes, even if it does it quickly) I can create my software faster in C than in C. That frees up time to work on performance, and still deliver my software on time. Its easier to write good UI in C than C, so Im more likely to be able to push work to the background while UI stays responsive, or to provide progress or hearbeat UI when the program has to block for a while. This doesnt make anything faster, but it makes users happier about waiting. Everything I said about C is probably true for Java, I just dont have the experience to say for sure. The virtual machine languages are unlikely to outperform compiled languages but they can get close enough that it doesnt matter, for (at least) the following reasons (Im speaking for Java here since Ive never done C). 1 The Java Runtime Environment is usually able to detect pieces of code that are run frequently and perform just-in-time (JIT) compilation of those sections so that, in future, they run at the full compiled speed. 2 Vast portions of the Java libraries are compiled so that, when you call a library function, youre executing compiled code, not interpreted. You can see the code (in C) by downloading the OpenJDK. 3 Unless youre doing massive calculations, much of the time your program is running, its waiting for input from a very slow (relatively speaking) human. 4 Since a lot of the validation of Java bytecode is done at the time of loading the class, the normal overhead of runtime checks is greatly reduced. 5 At the worst case, performance-intensive code can be extracted to a compiled module and called from Java (see JNI) so that it runs at full speed. In summary, the Java bytecode will never outperform native machine language, but there are ways to mitigate this. The big advantage of Java (as I see it) is the HUGE standard library and the cross-platform nature. Re item 2, quot2 Vast portions of the Java libraries are compiled so that, when you call a library function, you39re executing compiled code, not interpretedquot: Do you have a citation for that If it were really as you describe, I39d expect to run into native code from my debugger a lot, but I don39t. ndash cero Sep 28 08 at 22:46 Re: cero Debuggers often utilize less efficient but more expressive paths, and are therefore not a good marker for anything performance related. ndash Guvante Oct 7 08 at 18:35 Orion Adrian. let me invert your post to see how unfounded your remarks are, because a lot can be said about C as well. And telling that JavaC compiler optimize away empty functions does really make you sound like you are not my expert in optimization, because a) why should a real program contain empty functions, except for really bad legacy code, b) that is really not black and bleeding edge optimization. Apart from that phrase, you ranted blatantly about pointers, but dont objects in Java and C basically work like C pointers May they not overlap May they not be null C (and most C implementations) has the restrict keyword, both have value types, C has reference-to-value with non-null guarantee. What do Java and C offer Generally, C and C can be just as fast or faster because the AOT compiler -- a compiler that compiles your code before deployment, once and for all, on your high memory many core build server -- can make optimizations that a C compiled program cannot because it has a ton of time to do so. The compiler can determine if the machine is Intel or AMD Pentium 4, Core Solo, or Core Duo or if supports SSE4, etc, and if your compiler does not support runtime dispatch, you can solve for that yourself by deploying a handful of specialized binaries. A C program is commonly compiled upon running it so that it runs decently well on all machines, but is not optimized as much as it could be for a single configuration (i. e. processor, instruction set, other hardware), and it must spend some time first. Features like loop fission, loop inversion, automatic vectorization, whole program optimization, template expansion, IPO, and many more, are very hard to be solved all and completely in a way that does not annoy the end user. Additionally certain language features allow the compiler in C or C to make assumptions about your code that allows it to optimize certain parts away that just arent safe for the JavaC compiler to do. When you dont have access to the full type id of generics or a guaranteed program flow theres a lot of optimizations that just arent safe. Also C and C do many stack allocations at once with just one register incrementation, which surely is more efficient than Javas and C allocations as for the layer of abstraction between the garbage collector and your code. Now I cant speak for Java on this next point, but I know that C compilers for example will actually remove methods and method calls when it knows the body of the method is empty, it will eliminate common subexpressions, it may try and retry to find optimal register usage, it does not enforce bounds checking, it will autovectorize loops and inner loops and will invert inner to outer, it moves conditionals out of loops, it splits and unsplits loops. It will expand std::vector into native zero overhead arrays as youd do the C way. It will do inter procedural optimmizations. It will construct return values directly at the caller site. It will fold and propagate expressions. It will reorder data into a cache friendly manner. It will do jump threading. It lets you write compile time ray tracers with zero runtime overhead. It will make very expensive graph based optimizations. It will do strength reduction, were it replaces certain codes with syntactically totally unequal but semantically equivalent code (the old xor foo, foo is just the simplest, though outdated optimization of such kind). If you kindly ask it, you may omit IEEE floating point standards and enable even more optimizations like floating point operand re-ordering. After it has massaged and massacred your code, it might repeat the whole process, because often, certain optimizations lay the foundation for even certainer optimizations. It might also just retry with shuffled parameters and see how the other variant scores in its internal ranking. And it will use this kind of logic throughout your code. So as you can see, there are lots of reasons why certain C or C implementations will be faster. Now this all said, many optimizations can be made in C that will blow away anything that you could do with C, especially in the number crunching, realtime and close-to-metal realm, but not exclusively there. You dont even have to touch a single pointer to come a long way. So depending on what youre writing I would go with one or the other. But if youre writing something that isnt hardware dependent (driver, video game, etc), I wouldnt worry about the performance of C (again cant speak about Java). Itll do just fine. ltltltltltltltltltlt Generally, certain generalized arguments might sound cool in specific posts, but dont generally sound certainly credible. Anyways, to make peace: AOT is great, as is JIT . The only correct answer can be: It depends. And the real smart people know that you can use the best of both worlds anyways. In some cases, managed code can actually be faster than native code. For instance, mark-and-sweep garbage collection algorithms allow environments like the JRE or CLR to free large numbers of short-lived (usually) objects in a single pass, where most CC heap objects are freed one-at-a-time. For many practical purposes, allocationdeallocation-intensive algorithms implemented in garbage collected languages can actually be faster than their equivalents using manual heap allocation. A major reason for this is that the garbage collector allows the runtime system to amortize allocation and deallocation operations in a potentially advantageous fashion. That said, Ive written a lot of C and a lot of C, and Ive run a lot of benchmarks. In my experience, C is a lot faster than C, in two ways: (1) if you take some code that youve written in C, port it to C the native code tends to be faster. How much faster Well, it varies a whole lot, but its not uncommon to see a 100 speed improvement. (2) In some cases, garbage collection can massively slow down a managed application. The CLR does a terrible job with large heaps (say, 2GB), and can end up spending a lot of time in GC--even in applications that have few--or even no--objects of intermediate life spans. Of course, in most cases that Ive encounted, managed languages are fast enough, by a long shot, and the maintenance and coding tradeoff for the extra performance of C is simply not a good one. Of course, the question is whether we39re comparing an implementation of a program in managed vs. unmanaged code, or the theoretical top performance of the language. Clearly, unmanaged code can always be at least as fast as managed, as in the worst case you could just write an unmanaged program that did exactly the same thing as the managed code But most performance issues are algorithmic, not micro. Also, you don39t optimize managed and unmanaged code the same way, so quotC in Cquot is usually going to not work well. ndash kyoryu Dec 4 09 at 3:27 In CC you can allocate short lived objects on the stack, and you do when its appropriate. In managed code you cannot . you have no choice. Also, in CC you can allocate lists of objects in contigous areas (new Foo100), in managed code you cannot. So, your comparison is not valid. Well, this power of choices places a burden on the developers, but this way they learn to know the world they live in (memory. ). ndash Frunsi Dec 6 09 at 3:39 Go read about HP Labs Dynamo. an interpreter for PA-8000 that runs on PA-8000, and often runs programs faster than they do natively. Then it wont seem at all surprising Dont think of it as an intermediate step -- running a program involves lots of other steps already, in any language. It often comes down to: programs have hot-spots, so even if youre slower running 95 of the body of code you have to run, you can still be performance-competitive if youre faster at the hot 5 a HLL knows more about your intent than a LLL like CC, and so can generate more optimized code (OCaml has even more, and in practice is often even faster) a JIT compiler has a lot of information that a static compiler doesnt (like, the actual data you happen to have this time) a JIT compiler can do optimizations at run-time that traditional linkers arent really allowed to do (like reordering branches so the common case is flat, or inlining library calls) All in all, CC are pretty lousy languages for performance: theres relatively little information about your data types, no information about your data, and no dynamic runtime to allow much in the way of run-time optimization. My understanding is that CC produces native code to run on a particular machine architecture. Conversely, languages like Java and C run on top of a virtual machine which abstracts away the native architecture. Logically it would seem impossible for Java or C to match the speed of C because of this intermediate step, however Ive been told that the latest compilers (hot spot) can attain this speed or even exceed it. That is illogical. The use of an intermediate representation does not inherently degrade performance. For example, llvm-gcc compiles C and C via LLVM IR (which is a virtual infinite-register machine) to native code and it achieves excellent performance (often beating GCC). Perhaps this is more of a compiler question than a language question, but can anyone explain in plain English how it is possible for one of these virtual machine languages to perform better than a native language Here are some examples: Virtual machines with JIT compilation facilitate run-time code generation (e. g. System. Reflection. Emit on ) so you can compile generated code on-the-fly in languages like C and F but must resort to writing a comparatively-slow interpreter in C or C. For example, to implement regular expressions. Parts of the virtual machine (e. g. the write barrier and allocator) are often written in hand-coded assembler because C and C do not generate fast enough code. If a program stresses these parts of a system then it could conceivably outperform anything that can be written in C or C. Dynamic linking of native code requires conformance to an ABI that can impede performance and obviates whole-program optimization whereas linking is typically deferred on VMs and can benefit from whole-program optimizations (like s reified generics). Id also like to address some issues with paercebals highly-upvoted answer above (because someone keeps deleting my comments on his answer) that presents a counter-productively polarized view: The code processing will be done at compilation time. Hence template metaprogramming only works if the program is available at compile time which is often not the case, e. g. it is impossible to write a competitively performant regular expression library in vanilla C because it is incapable of run-time code generation (an important aspect of metaprogramming). playing with types is done at compile time. the equivalent in Java or C is painful at best to write, and will always be slower and resolved at runtime even when the types are known at compile time. In C, that is only true of reference types and is not true for value types. No matter the JIT optimization, nothing will go has fast as direct pointer access to memory. if you have contiguous data in memory, accessing it through C pointers (i. e. C pointers. Lets give Caesar its due) will goes times faster than in JavaC. People have observed Java beating C on the SOR test from the SciMark2 benchmark precisely because pointers impede aliasing-related optimizations. Also worth noting that does type specialization of generics across dynamically-linked libraries after linking whereas C cannot because templates must be resolved before linking. And obviously the big advantage generics have over templates is comprehensible error messages. C Fundamentals for Borland C Builder 2012-05-14 04:31:36 By Console77 Version: C Fundamentals for Borland C Builder 6.0 Easy for beginners, else none - No reliable internet components - Simple graphics, unless you dare rely on thirds party VCLs - No 64bit support - Buggy - Thirdparty VCLs are also buggy - Not a standard product - Less and less vendors supports DelphiC Builder - Insecure future, a sinking ship Embarcadero and their products are a sinking ship, together with the third party tools. There are always problems, bugs, or simply a connectivity is not supported. You never know if it is You, the third part VCL vendor or Emarcadero creating the problems. We have used an obsene amount of time in error finding, debugging. There is still no support for 64bit in C Builder, and the datasnap is unreliable, new releases are always buggy. Emrabadero has no reliable internet connectivity, but rely on Indy, which is unreliable and very difficult to manage. We now face more and more that we need to add plug-ins to our application, but they are not supporting Delphi C Builder. So, we now have to migrate to the standard, which is Visual Studio 2010. Perhaps for hobby projects DelphiC Builder is ok - but not for commercial applications. 34I use before old version34

No comments:

Post a Comment