Apakah mempelajari bahasa C # sebagai bahasa pertama merupakan kesalahan? [Tutup]


26

Saya tahu ada pertanyaan serupa di sini, yang saya baca, tetapi saya baru-baru ini membaca posting ini oleh Joel Spolsky:

Bagaimana saya bisa mengajar orang yang cerdas, tanpa pengalaman pemrograman, bagaimana memprogram?

Dan itu membuat saya berpikir tentang cara saya belajar dan apakah itu mungkin benar-benar berbahaya dalam jangka panjang.

Saya telah mencoba-coba berbagai bahasa tetapi C # adalah bahasa pertama saya yang serius, saya telah membaca "Head First C #" dan membuat beberapa proyek. Tetapi setelah membaca posting di atas, saya merasa sedikit mengecewakan bahwa saya mungkin melakukan semuanya salah, jelas saya menghormati pendapat Joel yang membuat saya sedikit terlempar.

Saya sudah mulai membaca "Kode" seperti yang direkomendasikan dalam daftar bacaan dan saya merasa cukup sulit, meskipun menyenangkan. Saya merasa seperti ini menghilangkan "noobish hacking about" saya di Visual Studio.

Jadi sekarang saya tidak yakin jalan apa yang harus saya ambil? Haruskah saya mundur selangkah dan mengikuti saran Joel dan mulai membaca?

Saya kira tujuan utama saya adalah hanya untuk menjadi programmer yang baik, seperti orang lain, tetapi saya tidak ingin menjadi praktik yang buruk dengan mempelajari bahasa .NET ketika seseorang yang pendapatnya saya hormati menganggap itu berbahaya.

Pikiran?


4
Mempelajari PK dengan cara yang sulit dapat dilakukan, tetapi hanya jika Anda memiliki guru yang baik.
Pekerjaan

5
C # bukan bahasa pertama saya VB.net adalah dan saya dapat memberitahu Anda itu bukan bagaimana Anda memulai yang penting. Saya pikir C # akan menjadi bahasa awal yang bagus hanya ingat untuk selalu bertanya pada diri sendiri mengapa semuanya dilakukan dengan cara mereka.
Daniel Little

23
Tidak. Bahasa apa pun sebagai bahasa pertama baik untuk mempelajari teori ilmu komputasi. Memang, untuk membuat karir itu, beberapa bahasa lebih baik daripada yang lain, tetapi untuk tujuan belajar, semuanya baik. Beberapa programmer terbaik yang saya kenal mulai dengan BASIC pada C64, Apple II atau TI-99 / 4A. Itu tidak membusuk otak mereka, tetapi mendorong mereka ke bahasa berikutnya dan kemudian ke yang berikutnya.
Jesse C. Slicer

5
Juga, itu tergantung pada apa yang Anda rencanakan untuk dilakukan dengan pengetahuan itu. C # memecahkan masalah bisnis hari demi hari di mana saya bekerja. Saya belum melihat C berbatasan dengan 2 dekade dan saya merasa pusing ketika harus.
Jesse C. Slicer

19
Mempelajari sesuatu tidak pernah merupakan kesalahan. Itu selalu jauh lebih baik daripada tidak belajar .
SK-logic

Jawaban:


80

Saya sudah mencoba-coba berbagai bahasa tetapi C # adalah bahasa serius pertama saya, saya sudah membaca "Head First C #" dan membuat beberapa proyek. Tetapi setelah membaca posting di atas, saya merasa sedikit mengecewakan bahwa saya mungkin melakukan semuanya salah, jelas saya menghormati pendapat Joel yang membuat saya sedikit terlempar.

Saya menghormati pendapat Joel juga, tetapi itu hanya itu: pendapat . Sama sekali tidak ada yang salah dengan menggunakan C # sebagai bahasa awal.

Saran terbesar yang bisa saya berikan kepada Anda, atau siapa pun yang melakukan pemrograman apa pun (bahkan jika mereka mulai menggunakan vanilla C!) Adalah untuk tidak stagnan, dan jangan menjadi orang yang religius . Saya tidak peduli apa bahasa pemrograman yang Anda mulai, atau seberapa murni atau benar bahasa itu - di zaman sekarang ini Anda tidak mampu duduk hanya di dunia pemrograman.

Sebagai contoh, saya mulai pemrograman dengan PHP3 kembali ketika saya masih remaja. Saya membangun beberapa aplikasi web kecil dan beberapa situs web dengannya; Saya berpikir bahwa saya adalah seorang programmer jenius dan bahwa saya bisa melakukan apa saja dengan PHP3, dan mengerutkan kening pada orang-orang yang semuanya tentang ASP atau BASIC. Wah, saya salah.

Saya tidak mulai benar-benar berkembang sebagai pengembang sampai saya mulai memperluas wawasan saya dan mempelajari bahasa dan konsep pemrograman lainnya. Selama sekolah menengah saya belajar RealBASIC, dan kemudian Visual Basic. Setelah sekolah bisnis, ketika saya menjadi pengembang profesional, saya mulai belajar C # dan Javascript dengan sungguh-sungguh.

Sekarang, jangan salah paham di sini - saya tidak menganjurkan Anda mencoba menjadi Jack of All Trades. Pada intinya, dan dalam perdagangan, saya masih seorang programmer PHP. PHP adalah roti dan mentega saya, dan saya tahu itu dalam dan luar. Namun, keterampilan PHP saya tidak menjadi apa yang baru saja mereka lakukan PHP. Berikut adalah beberapa konsep yang sangat penting yang saya tidak pahami dari PHP, meskipun bekerja secara profesional.

  • Javascript: Penutupan
  • jQuery (ya, pisahkan): DOM dan Ajax
  • Visual Basic: pemrograman berorientasi objek
  • C #: Generik dan penutupan
  • Ruby (on Rails): Kekuatan desain MVC

Saya dapat melanjutkan, dan begitu banyak orang lain di situs ini juga, selama berhari-hari. Meskipun saya seorang programmer PHP, saya dapat membawa semua konsep indah ini kembali ke pekerjaan yang saya lakukan setiap hari.

Apa maksud saya? Pelajari C #. Menjadi master C # - Anda akan memiliki karir yang panjang dan sukses dan Anda mungkin akan mencapai beberapa hal luar biasa. Tapi jangan berlubang-lubang sendiri. Perjalanan, dan cicipi bahasa dan lingkungan serta konsep lain.


+1: @toleero - C # atau Java baik-baik saja untuk mulai belajar. Joel dan Paul Graham Beating the Averages sedang berusaha untuk melewati titik pengembang mandek dengan bahasa yang mereka pilih seperti yang ditunjukkan ini terlalu umum.
Justin Shield

Omong-omong, Objective-C juga mengajarkan MVC, tapi kurang konvensional.
Moshe

4
+1. Menurut pendapat saya, Anda tidak bisa benar-benar menjadi pengembang hebat dan ahli bahasa utama Anda, tanpa belajar dan bermain-main dengan bahasa lain. Itulah cara terbaik untuk memperluas pengetahuan Anda, dan untuk benar-benar menghargai sisi kuat bahasa utama Anda.
Niklas H

3
+1. Kunci mengambil dari ini adalah kata-kata yang ia pilih untuk dicetak tebal. Terlalu mudah untuk mempelajari sesuatu seperti Java dan C #, atau bahkan C dan menghabiskan 10 tahun hidup Anda menulis kode dengan cara yang selalu Anda miliki. Dorong dirimu, belajar bahasa baru setiap tahun. Tanyakan hal-hal yang Anda lakukan, cobalah untuk menemukan cara yang lebih baik. Dan yang paling penting, tetap terlibat di Programmer dan StackOverflow.
Andrew T Finnell

Anda dapat melakukan semua contoh ini dalam C #. Dom / ajax: Perpustakaan C # xml & ajax. Berorientasi pada objek? Memeriksa. MVC? Kerangka MVC Asp.net.
Carra

21

ketika seseorang yang pendapatnya saya hormati berpikir itu berbahaya.

Ini mengingatkan saya pada sebuah kisah yang melibatkan Richard Feynman. Seorang mahasiswa di Caltech meminta ahli kosmologi terkemuka Michael Turner apa "Bias" nya di memihak jenis partikel sebagai calon untuk terdiri dari materi gelap, dan Feynman bentak dan berkata "Mengapa Anda ingin tahu nya bias? Bentuk Anda sendiri! ... Jangan memperhatikan otoritas, pikirkan sendiri. "

Programmer berasal dari semua lapisan masyarakat. Jawa diajarkan di banyak sekolah menengah dan perguruan tinggi saat ini, namun belum ditemukan ketika Joel Spolsky masih di sekolah. Tidak ada "satu jalan yang benar" ketika datang untuk menjadi programmer yang baik. Tentu saja ada beberapa klasik seperti SICP yang sebagian besar programmer sengaja temui, tetapi tidak ada standar yang keras dan cepat. Yang utama adalah memulai dari suatu tempat, dan fokus pada membangun konsep. Seorang programmer hebat pernah mengatakan sesuatu seperti:

Programmer yang buruk fokus pada kode, programmer yang baik fokus pada algoritma.

Saya pikir C # adalah bahasa yang baik untuk memulai, tapi saya memperingatkan Anda untuk waspada terhadap Visual Studio. Ini adalah IDE yang luar biasa, tetapi jika Anda menyeret DropDownListdan mengikat GridViewke ObjectDataSourcedan menggunakan Buttonkontrol untuk melakukan DropDownListpencarian berbasis, maka sebagian besar pekerjaan dilakukan oleh IDE dan Anda tidak benar-benar pemrograman. Manfaatkan alat IDE, tetapi selalu mencoba membangun konsep dan mengembangkan pengetahuan.


Jawaban yang luar biasa.
Yasir

3
Pertama Anda mengatakan "Pemrogram yang baik fokus pada Algoritma" kemudian Anda mengatakan "pekerjaannya dilakukan oleh IDE dan Anda tidak benar-benar pemrograman". Yang mana itu? Saya dapat menulis sebuah program, melakukan alur kerja dengan benar dan tidak peduli tentang "detail implementasi" seperti GridView dan DropDown (Dengan asumsi saya cukup tahu untuk memilih yang tepat, dan bagaimana mengimplementasikannya dengan benar). Memberi +1 untuk sisa pertanyaan, tetapi menggunakan IDE tidak menghalangi Anda untuk menjadi programmer yang baik.
WernerCD

@WernerCD - Ketika saya mengatakan "pekerjaan dilakukan oleh IDE", saya merujuk pada contoh spesifik yang saya berikan. Jika Anda mengambil anak yang belum pernah melakukan pengkodean apa pun dan meminta dia mengikuti petunjuk langkah demi langkah dalam sebuah IDE, ia akan membuat halaman yang berfungsi, tetapi ia tidak memprogram. Saya pikir IDE sangat berguna untuk pekerjaan pemrograman, tetapi sebagai pemula yang lengkap, Anda lebih baik belajar apa itu rekursi daripada menyeret kontrol di sekitar.
BlackJack

2
@ Kraham - Maaf, tapi saya tidak setuju. Dia tidak mencoba mempelajari pengembangan TI atau perangkat lunak - dia mencoba mempelajari pemrograman. Alat IDE, dalam pandangan saya, sebaiknya dibiarkan nanti setelah Anda benar-benar seorang programmer yang kompeten.
BlackJack

16
Kuncinya adalah bahwa pengembang yang baik tidak percaya pada sihir . Pekerjaan yang dilakukan oleh IDE (atau alat lain) adalah kenyamanan, jalan pintas, tetapi bukan pengganti untuk pengertian .
Bevan

7

Saya hanya seorang junior, tetapi dengan semua kerendahan hati dan rasa hormat untuk mereka yang jauh lebih berpengalaman, saya harus mengakui bahwa saya juga tidak mendapatkan sikap ini.

Seorang programmer berkomentar di bawah jawaban Joel: " sebagai seseorang yang harus membenturkan kepalanya di atas meja atas" programmer "yang datang sangat direkomendasikan untuk kemampuan C # mereka, tetapi tidak dapat melakukan hal-hal sederhana seperti menerapkan kelas dasar yang didokumentasikan dengan sangat baik, temukan kebocoran memori dalam program c dan c ++ " ...

Tetapi mengapa harus menemukan kebocoran memori di aplikasi C ++ menjadi sederhana bagi seseorang yang tidak pernah mengaku tahu C ++? :) Saya tidak mengerti. Ini seperti mengkritik seorang psikolog karena kurangnya keterampilan dokter gigi. Saya pasti tidak programmer yang baik, tapi aku merasa ini bukan karena saya tidak tahu C ++ - itu karena saya tidak tahu cukup baik kerangka dan bahasa yang saya saya menggunakan.

"tidak bisa melakukan hal-hal sederhana seperti menerapkan kelas dasar yang didokumentasikan dengan sangat baik (...) atau hanya mencari masalah sendiri atau mempelajari ide baru bahkan dengan kecepatan sedang"

OK, tetapi - korelasi tidak berarti sebab-akibat, dan apa yang membuat kita berasumsi bahwa kurangnya keterampilan pemrograman umum - yang saya tidak ragu - adalah hasil dari pilihan bahasa mereka?

Atau efek dari C # menjadi bahasa pilihan pertama mereka , dalam hal ini?

Aku bisa melihat penjelasan yang masuk akal lainnya (mungkin C # hanya trendi, dan karena itu menarik banyak pemula ... kebanyakan orang untuk siapa C # adalah bahasa pertama belum pemrograman sangat lama sekali , dan yang lebih dari cacat di haknya sendiri daripada tidak pernah pemrograman dalam bahasa lain ... dll, dll.).


Ini lebih seperti mengkritik tukang kayu yang hanya bisa menggunakan alat-alat listrik. Bahkan dalam bahasa yang dikumpulkan sampah, mengetahui berapa lama variabel Anda harus berkeliaran adalah keterampilan mendasar. Jika Anda tidak bisa mengenali variabel yang diinginkan seumur hidup dengan terang-terangan freemenatap langsung ke wajah Anda, bagaimana Anda akan mengenalinya dalam program yang ditulis dalam bahasa yang tidak memberikan petunjuk seperti itu?
Karl Bielefeldt

1
Saya mengerti maksud Anda. Aku tahu dasar-dasar sangat seumur hidup variabel (hanya tentang sebanyak yang saya mungkin perlu di C # setiap hari: ruang lingkup, using, IDisposable, event referensi pendengar mereka dll), tapi aku bahkan tidak bisa serius berusaha untuk mendiagnosis memori bocor dalam aplikasi C ++, karena saya bahkan tidak terbiasa dengan sintaks! Saya tidak tahu apa artinya tanda bintang.
Konrad Morawski

5

Saya akan mengatakan mempelajari satu bahasa dan tetap menggunakannya lebih dari kesalahan daripada memutuskan bahasa yang Anda harus mulai dengan. Ada beberapa bahasa yang bisa Anda pelajari yang tentu saja lebih mudah, tetapi lebih baik untuk mencoba dan mulai belajar yang banyak Anda akan gunakan (di sekolah pengaturan pilihan bahasa sudah dibuat oleh sekolah). Setelah mempelajari bahasa dengan benar dan menggunakannya secara aktif setelah beberapa bulan, Anda harus mencoba-coba bahasa pemrograman lain dan membandingkannya.

Di .NET mudah bagi Anda untuk pergi dengan dua ( semacam ) bahasa pemrograman yang berbeda karena Anda dapat beralih antara Visual Basic dan C #. Jadi Anda bisa belajar Visual Basic dan melihat perbedaannya. Pada level ini Anda harus mahir dengan coding prosedural dasar dengan tiga struktur pemrograman dasar, jika Anda bisa berkreasi dengan semuanya (dan tahu cara menggunakan variabel) maka Anda sedang dalam perjalanan untuk menjadi programmer yang hebat:

  • Sequence - Code ditulis dalam urutan langkah-langkah yang mengikuti satu sama lain dengan cara yang Anda tentukan, (mendefinisikan "lompatan", langkah-demi-langkah dan gotos)
  • Bersyarat - Kode dapat memiliki poin keputusan, (mendefinisikan pernyataan if, pernyataan kasus switch)
  • Looping / Repetition - Code dapat berulang dengan sendirinya mengingat beberapa keputusan (yang merupakan perpanjangan dari keduanya di atas, mendefinisikan for-, do-while-loop)

Tidak masalah apakah bahasa pemrograman sekunder Anda akan menjadi yang paling aktif atau tidak, hanya mengetahui bahwa bahasa pemrograman (khususnya jika mereka mengikuti paradigma yang sama) sangat mirip satu sama lain dan ada nuansa kecil yang benar-benar berjalan jauh untuk membuat Anda memahami bagaimana pemrograman perangkat lunak bekerja.

Dari itu, setidaknya setahun sekali, cobalah untuk belajar bahasa pemrograman baru yang mengikuti paradigma pemrograman lain . Anda tidak perlu sepenuhnya mengikuti bahasa baru tetapi ada beberapa manfaat untuk mengetahui paradigma lain. Ada beberapa paradigma, dan beberapa bahasa pemrograman mencampurkan banyak (perhatikan bahwa C # sebenarnya memiliki subset dari tiga berikut):

Hal terpenting yang harus Anda pelajari adalah bahwa banyak bahasa pemrograman mengikuti serangkaian idiom dan API dasar mereka sendiri. Jadi ketika Anda mempelajari bahasa baru, cobalah untuk mempelajari idiom-idiom dan API itu dengan baik dan Anda akan baik-baik saja ketika Anda membuat sesuatu. Salah satu alasan bagus adalah Anda akan menjadi lebih baik dalam mendesain dan memecahkan masalah pemrograman. Beberapa idiom dalam satu bahasa, mungkin memberi Anda wawasan tentang bagaimana menyelesaikan masalah dalam bahasa utama Anda.

Ketahuilah bahwa ada juga alasan lain yang sangat bagus mengapa Anda harus belajar bahasa pemrograman lain, selain bahasa utama yang paling banyak Anda gunakan: Peluang kerja Anda jauh lebih besar.


5

Fokus pertanyaan Anda dan banyak jawaban di sini ada di C #. Dari Wikipedia :

Bahasa C # dimaksudkan sebagai bahasa pemrograman yang sederhana, modern, bertujuan umum, dan berorientasi objek.

Berdasarkan itu saja, tampaknya aman untuk mengatakan bahwa Anda bisa belajar C # sebagai bahasa pertama tanpa melakukan kerusakan jangka panjang pada otak Anda. Saya tidak berpikir bahwa Joel mengutuk seluruh bahasa, ketika dia menulis :

Upaya untuk mengambil jalan pintas dan langsung belajar hal yang tepat yang ingin Anda pelajari sekarang (seperti memulai dengan C # dan ASP.NET) akan gagal.

Masalahnya bukan bahasa, itu mengambil jalan pintas. Terlalu sering, orang mencoba mengambil rute cepat ke tujuan akhir mereka dengan mengikuti tutorial langkah-demi-langkah atau "belajar segalanya dalam 24 jam" buku. Anda tidak perlu menghabiskan terlalu banyak waktu di Stack Overflow sebelum Anda mulai memperhatikan bahwa ada banyak pertanyaan di sepanjang baris: "Saya tidak pernah menulis garis kode dalam hidup saya, tapi saya masuk ke iPhone pemrograman! Bisakah seseorang tolong beri saya petunjuk langkah demi langkah untuk melakukan persis apa yang ingin saya lakukan? Terima kasih! " Saya tidak mengatakan bahwa Anda mengambil pendekatan itu, tetapi itu sesuatu yang harus Anda waspadai.

Jika Anda ingin mengembangkan keterampilan pemrograman yang solid, Anda harus mulai dengan mempelajari keterampilan dasar. Jika Anda mencoba melompat langsung ke aplikasi OOP dan GUI dan semacamnya, Anda mungkin akan kehilangan fundamental tersebut. Buku-buku yang ditunjuk Joel memang sangat bagus. Saya hanya membaca Buku C # Kuning (PDF), tetapi sepertinya ini adalah pengantar pemrograman yang lebih baik daripada kebanyakan buku C # yang saya lihat di toko.


Saya ingin menunjukkan bahwa frasa tersebut bukan "tidak belajar C #", melainkan "C # dan ASP.NET" (penekanan ditambahkan). Saya bukan programmer C #, tetapi .NET dan CLR adalah platform yang baik untuk mulai belajar.
forivall

5

Bagi saya, hal-hal dalam artikel lain itu sedikit menjadi omong kosong elitis. Ya, saya sering merekomendasikan SICP kepada pengembang serius yang benar-benar ingin menjadi lebih baik, tetapi hanya untuk mereka yang ingin melampaui "norma" dan belajar sihir yang mendalam. Memang, selama bertahun-tahun SICP adalah teks pemrograman mahasiswa baru standar MIT; tetapi, banyak programmer yang bekerja solid tidak pernah memiliki kesempatan untuk menghadiri institusi yang bagus tapi mahal dan sangat selektif.

Jadi apa yang saya rekomendasikan, untuk menjawab pertanyaan Anda? Mulailah dengan apa yang Anda miliki dan pelajari cara berpikir seperti seorang programmer, daripada hanya belajar bahasa tertentu.

Jika Anda memiliki implementasi C # yang tersedia, yah, saya dapat memberi tahu Anda bahwa itu adalah bahasa yang sangat baik untuk kerja yang kaku seperti saya — seperti halnya Java, JavaScript, Python, Ruby, Scala, Skema, dan banyak bahasa lain yang saya miliki pelajari selama bertahun-tahun. Pada akhirnya, saya mencoba memilih bahasa dan alat yang tepat untuk pekerjaan tertentu, dan itu berarti beralih bahasa seperti topi.

Tidak ada yang salah dengan menggunakan cara-cara menyenangkan untuk belajar, seperti mendekati Ruby melalui Why's Poignant Guide and Shoes (seperti yang saya rekomendasikan di pos terbaru lainnya ). Ada jalan misterius dan mistis, seperti membenturkan kepala Anda melawan The Little Schemer dan The Seasoned Schemer dalam perjalanan Anda ke SICP . Banyak pemikir modern akan membuat Anda melewatkan semua hal yang lebih tua akademis dan "perusahaan" dan terjun langsung ke JavaScript, JQuery, dan HTML5 sebagai gantinya. Ada banyak cara untuk memulai jadi jangan buang waktu terlalu banyak. Cukup pilih satu dan dapatkan kode!

Secara realistis, saya percaya beberapa profesional yang bekerja hari ini akan mengirim Anda mundur untuk mempelajari Assembler atau C / C ++ terlebih dahulu. Terus terang, jika mereka melakukannya, saya tidak percaya mereka akan melakukan banyak layanan untuk Anda.

Jadi, untuk memperindah sedikit tentang "mulai dengan apa yang Anda miliki," saya punya tiga nasihat lagi:

  • Pilih satu bahasa pemrograman yang tampaknya keren untuk Anda dan satu pendekatan pembelajaran yang tampaknya masuk akal dan berikan mereka semua. Menjadi melek huruf dalam bahasa pilihan Anda; baca kode sebanyak yang Anda bisa kelola!
  • Dapatkan tangan Anda pada keyboard Anda segera dan mulai coding saat Anda belajar. Lakukan semua latihan dasar dalam buku pemrograman Anda sendiri dan latih semua tutorial yang dapat Anda temukan dengan jari-jari Anda dengan senang hati mengkliknya untuk membuatnya benar-benar berfungsi. Anda akan dikejutkan oleh berapa banyak keterampilan yang akan Anda peroleh sambil memperbaiki kesalahan dalam demo yang seharusnya merupakan kode kerja tetapi tidak!
  • Habiskan sebagian besar upaya Anda untuk mempelajari bagaimana programmer yang baik memikirkan jalan mereka melalui masalah. Pelajari cara menganalisis dan menguraikan masalah dan sistem yang kompleks, memecahnya sampai Anda benar-benar memahaminya. Kemudian belajar mensintesis dan merancang solusi otomatis, membangunnya sehingga membuat beberapa tugas lebih mudah bagi sebagian manusia di planet ini.

Saya mulai dengan FORTRAN IV dan QBASIC dan jika itu tidak merusak saya, C # tidak akan menyakiti Anda juga! Semoga berhasil dan pastikan Anda bersenang-senang sambil belajar!


Anda dapat menemukan ceramah orisinal oleh Abelson & Sussman di sini: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

Saya pikir nasihat terbaik yang pernah saya lihat ketika orang bertanya, "Bahasa apa yang harus saya pelajari?" sederhana: seorang programmer yang baik dapat bekerja dalam bahasa apa pun.

Ada beberapa argumen yang menentang pernyataan itu, saya yakin, tetapi intinya adalah: belajarlah untuk menjadi programmer yang baik, alih-alih seorang ahli bahasa, terlebih dahulu. Pembangun tidak berspesialisasi dalam membangun tepat di satu bidang tanah, mereka mempelajari keterampilan perdagangan mereka dan menerapkannya di sebidang tanah apa pun yang mereka butuhkan.


Saya akan memberi +1 pada itu. Mirip dengan analogi saya yang biasa membangun sepeda motor. Anda dapat membangun sepeda motor yang layak dengan bekerja di jalur perakitan dan mengikuti buku, tetapi pembangun yang benar-benar hebat adalah helikopter yang mengetahui nyali dari sepeda yang keluar masuk, dan sebagai hasilnya Anda mendapatkan beberapa barang menakjubkan.
Jarrod Nettles

3

Kadang-kadang saya curiga bahasa pilihan lebih banyak berhubungan dengan kepribadian kita dan cara kita terhubung dan lebih sedikit berkaitan dengan pertimbangan praktis atau akademis daripada yang ingin kita akui.

Yang mengatakan, belajar hal baru tidak pernah berbahaya. Anda akan tahu hari Anda telah melewati ambang batas menuju otak yang berkembang atau mungkin rusak (semua masalah perspektif saya kira) ketika Anda mulai menyadari bahwa semuanya memiliki manual. Anda pada akhirnya dapat benar-benar melakukan apa pun yang Anda inginkan jika Anda memiliki bakat dan benar-benar tertarik dalam melakukan daripada aspek keberadaan seorang programmer.

Setidaknya main-main dengan Python dan JavaScript. Ini adalah keuntungan pembelajaran yang pasti untuk benar-benar dapat hanya menulis kode dan melihatnya langsung dieksekusi dalam file I / O lingkungan konsol yang dapat diakses seperti IDLE atau lingkungan kotak pasir seperti browser. Apa yang saya tidak suka tentang C # dan Java adalah bahwa mereka ingin semuanya terbatas pada kelas bahkan jika Anda benar-benar hanya menulis fungsi sederhana dengan pembungkus tidak berguna di sekitarnya untuk membuat teman-teman Anda atau kompiler yang terlalu membatasi senang. Hal lain yang saya sukai dari JS dan Python adalah mereka benar-benar membiarkan Anda mengatur paradigma Anda sendiri. Agak terlalu fleksibel oleh banyak preferensi pengembang. Saya masih tidak yakin apa yang harus dipikirkan tentang kebijaksanaan operator dasar yang kelebihan beban, tetapi saya cukup yakin saya suka Python karena mengizinkan opsi.

Juga jangan jatuh pada kebohongan kejam memilih bahasa utama dengan daftar pekerjaan terbanyak. Lebih baik menjadi ikan besar di perairan sedang melakukan apa yang Anda suka daripada anggota gerombolan ikan yang sebagian besar tidak bisa diselamatkan yang mengubah setiap pencarian kerja menjadi lebih banyak lotre daripada proses pencocokan.


Sebagai seseorang yang menyewa dari gerombolan ikan yang tak tertahankan dalam pekerjaan saya, saya harus setuju. Ada banyak umpan balik yang sangat berguna dalam diskusi ini; Saya harap @teroero bermanfaat dan tidak berkecil hati. Menurut saya, sementara Joel seorang genius, kita seharusnya tidak pernah menerima semua yang dikatakan seseorang sebagai Injil. Buku-buku yang dia rekomendasikan ada yang berguna. Tapi begitu juga coding setiap hari dan mendapatkan pengalaman praktis. Lakukan itu dalam beberapa bahasa (katakanlah C # dan sesuatu yang kurang seperti C - Basic, mungkin, atau Python atau Ruby) dan Anda akan menjadi pengembang yang sama baiknya dengan banyak orang di luar sana: o)
Owen Blacker

3

C # tidak seburuk Jawa dengan rentang yang cukup besar. Mereka memiliki dukungan yang lebih baik untuk banyak konsep seperti pemrograman fungsional, pemrograman generik, penghancuran deterministik dan jenis nilai, kelebihan operator, dll. Dukungan mereka untuk fitur-fitur ini masih bisa menggunakan banyak pekerjaan, tentu saja, tetapi jauh lebih baik daripada Java, bahkan jika tidak ada C ++.

Kedua, saya pikir Anda salah membaca apa yang dikatakan Joel. Jika Anda dapat menguasai petunjuk dan rekursi, maka tidak masalah bahasa apa yang Anda gunakan sekarang. Yang paling penting adalah menggunakan sedikit unsafekode, memahami unsafe quicksortatau sesuatu, dan kemudian kembali ke sisa C # normal.

Oh, dan mulai membaca :)


2

Bahasa pertama yang produktif bagi saya adalah C #. Meskipun saya telah mengutak-atik Foxpro di waktu sekolah dan sedikit C di Perguruan Tinggi. C # cukup bagus dan titik awal yang sangat bagus untuk siapa pun. Ini mengikuti dasar-dasar umum pemrograman seperti pengetikan yang kuat, enkapsulasi, dll warisan yang saya percaya orang harus selalu belajar, tidak peduli apakah mereka menggunakannya atau tidak. Kemudian, Anda selalu dapat pindah ke bahasa lain seperti Python yang tidak mengikuti standarisasi pemrograman dasar.

Faktor tambahan lainnya yang orang tidak benar-benar tambahkan ke aspek pembelajaran C # adalah ketersediaan IDE terbaik untuk bahasa apa pun yang saya lihat. Eclipse IDE juga bagus, tetapi begitu Anda menggunakan Visual Studio, Anda akan berterima kasih pada microsoft.

C # ditingkatkan lebih dari C, memastikan bahwa Anda tidak perlu belajar bahasa lain sebelumnya. Semua bahasa lebih dari satu dekade telah berevolusi dari sifat C, bahkan JAWA.

Jadi, putusannya adalah, C # adalah titik awal yang bagus yang membuat Anda dapat mempelajari bahasa lain dengan cepat di masa depan


Eclipse jauh lebih baik bagi saya daripada Visual Studio. Tapi saya setuju dengan Anda - C # akan menjadi bahasa yang hebat, terutama jika itu tidak dimiliki oleh & terkunci ke dalam standar kepemilikan jahat-menghancurkan penguasa gelap Redmond .
Thomas W

2

Mempelajari C # sebagai bahasa pertama bukanlah kesalahan selama Anda cepat atau lambat melanjutkan dan mulai belajar bahasa kedua. Itu jauh lebih penting. Bahkan lebih baik jika bahasa kedua itu agak berbeda dari C # (javascript atau ruby ​​akan dalam hal itu lebih baik dari java). Setiap bahasa memiliki pro dan kontra, dan perbedaan itulah yang akan membuat Anda menjadi programmer yang lebih baik dalam jangka panjang.


1

Sebanyak yang saya sarankan agar Anda belajar banyak bahasa (seperti yang disarankan orang lain), pastikan Anda tahu (beberapa) bahasa yang Anda pelajari dengan sangat baik.

Risiko mengetahui banyak bahasa adalah bahwa Anda mungkin tidak pernah belajar bahasa yang benar-benar menyebabkan frustrasi ketika sebenarnya ingin menyelesaikan masalah.

Mengetahui konstruksi for-loop adalah banyak bahasa yang menyenangkan tetapi tidak berguna jika Anda tidak tahu cara menangani kesalahan di dalamnya.


1

Jangan khawatirkan diri Anda sendiri bahwa Anda kebetulan belajar C # terlebih dahulu. Ini sama dengan khawatir bahwa langkah pertama Anda diambil dengan kaki kiri atau kaki kanan Anda. Satu-satunya perbedaan antara mempelajari bahasa yang dikelola terlebih dahulu adalah Anda hanya menunda ketika Anda harus mempelajari petunjuk dan manajemen memori yang terperinci. Ini sebenarnya dapat membantu Anda, karena ketika saatnya untuk belajar C satu-satunya hal baru yang Anda khawatirkan adalah manajemen memori - Anda juga tidak akan juggling mencoba mempelajari struktur kontrol, konsep fungsi, dll. Dan akan dapat berkonsentrasi sepenuhnya pada pointer dan manajemen memori.

Stereotip ada karena ada pemrogram bahasa yang dikelola yang tidak pernah melakukan bagian kedua itu dan mempelajari C dan C ++, dan kemudian diterapkan pada pekerjaan C dan C ++.

Ini seperti mempelajari alat musik - yang pertama sulit karena Anda mencoba mempelajari mekanisme membaca musik tertulis DAN mekanika fisik mengartikulasikan suatu alat untuk melakukan apa yang Anda inginkan. Untuk instrumen kedua dan selanjutnya yang Anda pelajari, Anda dapat berkonsentrasi hanya pada apa yang membuat instrumen itu berbeda dari apa yang sudah Anda ketahui.


1

Sulit bagi pemula, tanpa keraguan. Saya sudah melakukan vb, javascript, PL / SQL, T-SQL, Uniface dan sedikit C # untuk beberapa nama.

Seseorang sebelumnya menyebut Visual Basic sebagai tempat mereka belajar tentang pemrograman berorientasi objek, dan sejujurnya VB.NET memiliki sintaksis yang paling mudah dimengerti dari bahasa apa pun yang pernah saya lihat. Fitur terbaik adalah bahwa kata kunci cocok dengan konsep yang dijelaskan dengan cermat.

mis. Function myHandler () menangani myButton.click

atau Kelas Manusia Memperluas mamalia mengimplementasikan intelligentLifeform

Serius, untuk keterbacaan ketika Anda seorang pemula apa lagi yang Anda inginkan dari sintaks?

Ketika Anda mencari properti dan metode (dan membedakan antara subs dan fungsi) itu jauh lebih mudah dibaca di VB.

Demikian pula saat mendeklarasikan variabel

Dim myString As string - jelas yang merupakan tipe dan yang merupakan contoh

Sensitivitas kasus C mendorong apa yang bagi saya merupakan kebiasaan buruk - memiliki nama yang sama untuk kelas dan contoh dengan satu huruf besar dan satu huruf kecil.

misalnya

Manusia manusia

  • Apakah ada begitu sedikit kata dalam kosakata Anda sehingga Anda harus menggunakan kembali yang sudah ada dengan huruf besar?

jika Anda memanggil human.think, akan mudah untuk keliru contoh untuk kelas dan berpikir Anda memanggil metode statis sekilas. Dan sering melirik bagaimana kita memahami kode, kita tidak punya waktu untuk mengarahkan setiap elemen untuk membiarkan editor memberi tahu kita apa yang terjadi.

C # mungkin memiliki beberapa kelebihan, tetapi jauh lebih sulit untuk memulai - meskipun menghemat mengetik. Itulah mengapa harus ada tempat untuk kedua bahasa tersebut.


+1 untuk manusia Manusia. Memiliki c # sebagai bahasa kedua (roti dan mentega = Delphi) melalui buku daripada memiliki pengalaman mendalam dengan kode yang ada, itu selalu membuat otak saya sedikit sakit melihat ini. Meskipun ada bagian dari bahasa yang saya sukai, menyeret sensitivitas case dari C adalah kesalahan IMHO besar.
Matt Allwood

Tentu, karena Dim myHuman as Humanjauh lebih baik? : D
scrwtp

0

Kelemahan terbesar yang bisa saya lihat adalah bahwa Visual Studio dan alat-alat yang terkait sangat, sangat bagus - hal-hal seperti intellisense dan penyelesaian kode dapat dengan mudah menjadi tongkat penyangga. Saya biasanya berpendapat bahwa lingkungan bisa sangat baik dan mendukung bahwa Anda cenderung merasa sedikit tersesat ketika Anda perlu, katakanlah, retas kode ruby ​​dalam editor teks. Oh, dan biasanya kamu juga akan ketinggalan barang seperti LINQ.


0

C # baik-baik saja untuk memulai pemrograman.

Ini adalah apa yang saya diberitahu untuk memulai, bahkan tanpa memiliki kesempatan untuk bermain-main dalam hal lain (selain dari Hello World di Jawa, beberapa hal LOGO dasar, dan beberapa hal di Scratch, tetapi tidak ada yang "Serius").

Secara keseluruhan, ini bisa sulit - ada banyak hal yang tampaknya tidak intuitif, dan memang ada keterbatasannya, tapi saya pikir ini mendorong pengkodean yang baik dan bagus sekali setelah Anda menguasainya. Maksud saya, ini memberi Anda lebih banyak kekuatan dan sedikit lebih profesional daripada Python (yang biasanya disarankan), dan itu akan membuat perbedaan dunia - mencoba C ++ setelah C # tidak terlalu menyakitkan, tetapi jika saya mulai dengan Python, maka itu akan menjadi rintangan yang sangat besar, bahkan hanya pada level sintaksis.

Juga, ia memiliki dukungan lintas platform yang baik dalam bentuk Mono (bagi Anda yang berpikir Mono bukan masalah besar - Mesin Game Unity memungkinkan Anda kode dalam versi itu). Ini juga sangat berguna untuk sebagian besar hal, apakah itu game scripting, atau desain web, atau Aplikasi Windows. Tentu saja, beberapa bahasa akan lebih baik untuk baris tertentu, jadi itu akan tergantung pada arah umum apa yang Anda rencanakan - misalnya, jika Anda menuju ke arah web, maka C # (ASP.NET) pasti akan menjadi ide bagus. Jika Anda berencana untuk bermain, maka Anda harus berpikir tentang C ++.

Pada akhirnya, ada baiknya mempelajarinya, bahkan jika Anda akhirnya tidak menggunakannya karena kesederhanaan Python atau sifat kuno Jawa (karena siklus rilis untuk Jawa BENAR-BENAR lambat) - Anda belajar pengkodean yang baik praktek, sementara tidak terlalu rumit untuk pemula untuk belajar.


posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
Agak

1
Bagaimana itu? Masih sulit dibaca, atau oke sekarang? Terima kasih dengan cara untuk kepala.
Sbspider

-1

Untuk menjadi seorang programmer Anda harus memiliki hasrat. Programmer yang saya tahu adalah orang-orang yang keluar dari jalan mereka untuk belajar dan melihat perubahan industri. Saya memulai pemrograman saya dengan dasar pada Commodore Vic 20 (Ya itu lama) dan terus beralih ke bahasa baru lainnya. Bagian dari tahun pemrograman saya bahkan termasuk COBOL. Saya juga mulai memperhatikan bahwa beberapa bahasa bekerja paling baik dalam proses tertentu vs yang lain. Saran saya kepada Anda adalah mempelajari bahasa apa pun dan memahami konsep pemrograman dasar seperti loop, metode, perbandingan. Sebagian besar bahasa mendukung ketiga konsep tersebut. Anda seharusnya tidak pernah mengatakan "Ini adalah cara terbaik" melainkan "Bagaimana saya bisa meningkatkan ini". Hal terburuk tentang kalimat terakhir itu adalah Anda bisa menguasai teknik. Pemrograman itu menyenangkan, buatlah itu menyenangkan! Internet membuka cara baru untuk mengalami pemrograman karena tingkat akses yang kita miliki terhadap informasi saat ini sangat mengejutkan. Bagi saya sebelum internet saya harus pergi ke rak dan menarik buku-buku pemrograman IBM GREY dan belajar. Hari ini Anda bisa mengetikkan sesuatu ke google dan whammo.


2
posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
nyamuk

-3

Wow banyak jawaban. Inilah sudut pandang saya:

C # bukan tempat untuk belajar ilmu komputer. Saya melihatnya sebagai ide yang sangat buruk. Saya akan mencantumkan beberapa kekhawatiran saya di bawah ini.

  • C # adalah bahasa Microsoft. Bukannya saya menilai MS di sini, hanya saja di luar dunia MS ada sedikit serapan. Jika Anda hanya ingin memprogram perangkat keras MS maka silakan tetapi saya tidak melihat ini pendekatan yang solid untuk ilmu komputer.
  • Saya bukan penggemar belajar program dengan bahasa yang dikelola. Saya percaya nilai mereka dalam mempelajari cara mengelola memori program dan pembangunan struktur data.

Terlalu lelah untuk melanjutkan begitu cepat memilih bahasa lain.


Saya bisa mengerti jika Anda berpikir bahwa mengikat diri sendiri dengan MS akan berdampak buruk bagi karier Anda. Tapi apa hubungannya dengan belajar ilmu komputer? CS tidak ada hubungannya dengan platform atau perusahaan.
svick

-3

Saya akan merekomendasikan C # atau bahasa apa pun yang menawarkan tiga hal ini pada intinya:

Diketik sepenuhnya dikompilasi dan berorientasi objek sepenuhnya ..

Bahasa pertama yang menawarkan tiga inti ini akan mengajarkan banyak tentang aliran program, sintaksis, dan bagaimana melakukan pemecahan masalah dengan cara yang lebih terstruktur. Saya hidup dan bernafas dalam sekelompok bahasa besar yang tidak memiliki atribut ini tetapi jika saya mengajar seseorang bahasa saya akan memilih satu yang memiliki tiga persyaratan ini.


-6

Tidak, jawaban itu mengerikan. Mengapa? Yah, dia memang meresepkan beberapa buku bagus yang harus kamu baca, tetapi tanpa kerja di ruang kelas dan lab (lab komputer), kamu akan tersesat dan frustrasi. Anda harus bersama sekelompok programmer baru bereksperimen karena ada begitu banyak yang harus dipelajari selain apa yang ada di buku-buku itu. Saya tidak mengatakan Anda harus menggunakan BSCS, tetapi Anda perlu akses ke instruktur yang berpengetahuan luas juga ketika banyak hal bisa salah, seperti masalah kompiler, membangun lingkungan ... sebut saja. Anda tidak akan menjadi programmer yang bekerja di ruang hampa. Buku apa pun yang dibutuhkan kursus Anda akan cukup baik selama Anda memilih sekolah yang setengah jalan.

Jadi, daftar untuk beberapa kelas dan itu akan jauh lebih menyenangkan! Plus, jika Anda berencana untuk mendapatkan pekerjaan sebagai programmer Anda perlu koneksi dan Anda akan mendengar semua buzz tentang perusahaan yang merekrut di kampus, dll.

Akhirnya, pendidikan formal sangat penting karena pemrograman membutuhkan banyak pengetahuan latar belakang teoritis untuk memahami bagaimana segala sesuatu seharusnya bekerja di semua tingkatan (hw / sw) sehingga Anda dapat mencari cara untuk memperbaiki hal-hal. Hampir semuanya adalah kotak hitam, jadi Anda harus bisa mencari tahu mengapa ada yang berperilaku seperti itu sehingga Anda dapat mengambil tikaman logis berikutnya dalam gelap. Tanpa setidaknya gelar pemrograman 2 tahun (apa pun namanya) Anda akan dirugikan.

PS Saya tidak akan pergi dekat. Net, atau C #, sampai Anda mengalami Java. C # tidak enak dipandang. Ini kode yang terlihat berantakan dan berantakan. . Net IDE menyebalkan melampaui kepercayaan. Ini di zaman kegelapan standar IDE. Java: C # ~ Data: Lore


10
Aku bersamamu hingga paragraf terakhir. Ini menyatakan pendapat Anda tentang estetika C # sedemikian rupa sehingga tidak masuk dalam jawaban yang baik.
Adam Lear

9
Bahkan sebelum paragraf terakhir, ini kebanyakan omong kosong. Beberapa orang belajar dengan baik di lingkungan ruang kelas - tetapi bagi yang lain itu membuang-buang waktu. Mempelajari latar belakang teoretis itu penting, tetapi itu juga tidak perlu membutuhkan kelas atau pendidikan formal - mereka membantu sebagian orang, tetapi tidak (bahkan dekat dengan) semua orang.
Jerry Coffin

Pendapat hanya itu; itu bukan pernyataan fakta. Jadi, jangan merasa tersinggung.
Tom Jones

ANDA salah memahami rekomendasi untuk sekolah formal. Anda membutuhkan tempat untuk bertanya dan berkolaborasi dengan rekan-rekan Anda di lab. Kolaborasi adalah konsep utama. Maaf jika Anda adalah pengguna C # dan saya menyinggung Anda meskipun itu tidak mungkin dilakukan di antara para teknisi yang memihak.
Tom Jones

1
Stackoverflow telah menjadi "lab" bagi banyak orang yang tidak bisa kuliah tetapi menginginkan dukungan komunitas. Apakah sama dengan kelas? Tentu saja tidak. Apakah ini cukup baik? Anda bertaruh.
BlackJack
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.