Bagaimana saya bisa memastikan bahwa saya benar-benar belajar cara memprogram daripada sekadar mempelajari detail suatu bahasa? [Tutup]

82

Saya sering mendengar bahwa programmer sejati dapat dengan mudah mempelajari bahasa apa pun dalam waktu seminggu. Bahasa hanyalah alat untuk menyelesaikan sesuatu, saya diberitahu. Pemrograman adalah keterampilan utama yang harus dipelajari dan dikuasai.

Bagaimana saya bisa memastikan bahwa saya benar-benar belajar cara memprogram daripada sekadar mempelajari detail suatu bahasa? Dan bagaimana saya bisa mengembangkan keterampilan pemrograman yang dapat diterapkan ke semua bahasa, bukan hanya satu?

Ryan
sumber
25
Cobalah belajar bahasa lain. Cobalah untuk memecahkan masalah yang sudah Anda ketahui bagaimana menyelesaikannya dalam bahasa pertama Anda dalam bahasa baru Anda. Itu tidak akan mudah pada awalnya. Tetapi Anda akan tahu bahwa Anda belajar setelah menyelesaikan masalah lama dengan cara baru menjadi terasa lebih mudah (catatan: ini mungkin memerlukan sedikit waktu).
FrustratedWithFormsDesigner
42
Juga, orang yang mengklaim dapat belajar bahasa dalam seminggu perlu mendefinisikan apa yang mereka maksud ketika mereka mengatakan "Belajar". "What do you mean you're not an expert in LanguageX?!? I can learn a language in a Week!". 1 minggu kemudian:"See, I've learnt the language, and here's a Hello World example I copied from Wikipedia to prove it!"
JohnL
9
Satu pertanyaan perlu ditanyakan. Apakah Anda membangun logika Anda dalam sintaks atau apakah Anda menggunakan model mental yang lebih cepat dan lebih efisien? Saya menemukan bahwa programmer pemula cenderung berpikir menggunakan sintaks.
ChaosPandion
10
@ PaulR: Tidak butuh 10.000 jam untuk belajar mengendarai sepeda. Atau berenang, dalam hal ini.
Robert Harvey
7
@PaulR Perkataannya adalah membutuhkan waktu 10 ribu jam untuk menguasai suatu keterampilan, tidak hanya "mempelajarinya"
Tobias Kienzler

Jawaban:

96

Jangan khawatir tentang memenuhi konsep "keterampilan" konyol yang biasa terdengar dalam pernyataan seperti:

  • Semua bahasa pemrograman pada dasarnya sama.
  • Setelah Anda mengambil satu bahasa dengan baik, Anda dapat mengambil bahasa lain dengan cepat dan mudah.
  • Bahasa hanyalah alat, ada beberapa keajaiban otak yang sebenarnya membuat perangkat lunak.

Semua pernyataan ini didasarkan pada premis yang cacat dan mengkhianati kurangnya pengalaman dalam spektrum bahasa pemrograman yang lebih luas. Itu adalah pernyataan yang sangat umum dan sangat dipercaya oleh banyak programmer, saya tidak akan membantahnya, tetapi saya akan membantah keakuratan mereka.

Ini terbukti sederhana: Habiskan satu minggu (atau benar-benar jumlah waktu lebih dari beberapa hari) untuk mempelajari dasar-dasar Haskell , Prolog , atau Agda . Anda akan segera setelah mulai mendengar lagu lama Sesame Street diputar di kepala Anda "Salah satu hal ini tidak seperti yang lain ...".

Ternyata, ada banyak bidang bahasa pemrograman, teknik, dan pendekatan yang sangat asing dari apa yang 95% dari kita lakukan atau pernah dilakukan. Banyak yang sama sekali tidak menyadari bahwa konsep-konsep lain ini bahkan ada, yang baik-baik saja dan konsep-konsep ini tidak diperlukan untuk menjadi programmer yang dipekerjakan dan bahkan efektif.

Tetapi faktanya tetap ada: Teknik dan pendekatan ini memang ada, mereka baik untuk banyak hal yang berbeda dan bisa sangat berguna, tetapi mereka tidak seperti yang biasa Anda lakukan dan orang tidak bisa begitu saja mengambilnya dengan sore bermain-main.

Lebih jauh, saya akan mengatakan sebagian besar kasus di mana orang mengklaim mereka memiliki atau dapat mempelajari hal-hal rumit seperti bahasa pemrograman begitu cepat selama seminggu, mereka menderita sedikit Efek Dunning Kruger , Wikipedia (penekanan pada saya):

Efek Dunning-Kruger adalah bias kognitif di mana individu yang tidak terampil menderita superioritas ilusi, keliru menilai kemampuan mereka jauh lebih tinggi dari rata-rata. Bias ini disebabkan oleh ketidakmampuan metakognitif yang tidak terampil untuk mengenali kesalahan mereka.

Saya akan merujuk orang ke wawancara yang lebih berpengalaman tentang konsep belajar ke program oleh Peter Norvig: Belajar untuk memprogram dalam sepuluh tahun .

Peneliti (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) telah menunjukkan bahwa diperlukan sekitar sepuluh tahun untuk mengembangkan keahlian di berbagai bidang, termasuk bermain catur, musik komposisi, operasi telegraf, melukis, bermain piano, berenang, tenis, dan penelitian dalam neuropsikologi dan topologi. Kuncinya adalah praktik yang disengaja: tidak hanya melakukannya berulang-ulang, tetapi menantang diri Anda dengan tugas yang berada di luar kemampuan Anda saat ini, mencobanya, menganalisis kinerja Anda saat dan setelah melakukannya, dan memperbaiki kesalahan apa pun. Lalu ulangi. Dan ulangi lagi.


Tentunya, ada seperangkat prinsip menyeluruh yang akan membuat semua bahasa mudah dipelajari!

Mungkin, tapi saya berpendapat serangkaian prinsip ini begitu besar sehingga hampir selalu ada bahasa di luar jangkauan satu minggu Anda. Ketika Anda menambahkan konsep-konsep baru ke daftar yang Anda kenal dan nyaman, daftar bahasa di luar jangkauan langsung Anda mungkin menyusut, tetapi saya sulit percaya bahwa itu akan hilang. Daftar pendekatan komputasi konseptual untuk hal-hal begitu luas itu membingungkan, dari bahasa concatenative ke bahasa berbasis vektor ke bahasa yang mengkhususkan diri dalam AI atau metaprogramming ( atau bahasa yang ada sepenuhnya untuk mendukung ekspresi reguler ).

Setelah sepuluh tahun, Anda umumnya dapat memprogram. Ini berarti Anda dapat menulis kode yang agak layak dalam beberapa bahasa atau gaya bahasa. Jadi setelah 10 tahun Anda siap untuk mulai menangani konsep lintas sektor luas yang tak terhitung ini selama sisa hidup Anda, dan singkat menjadi Edsger W. Dijkstra , Donald Knuth atau John D. Carmack , Anda tidak akan mendapatkan semua dari mereka.

Jimmy Hoffa
sumber
11
Tingkatkan. Ada perbedaan antara "mengetahui" suatu bahasa, dan cukup mahir untuk menemukan dan memperbaiki bug kecil dalam satu bahasa. Seorang programmer yang baik dapat melakukan yang terakhir dengan cukup cepat, bahkan dalam bahasa kuno.
Telastyn
5
@ CharlesE.Grant Saya pikir Anda melebih-lebihkan apa yang dipelajari mayoritas di perguruan tinggi, juga berapa lama untuk menjadi semi-fasih dalam bahasa seperti Haskell atau Prolog. Saya berpendapat seorang insinyur yang berpengalaman di industri yang berpengalaman tanpa pengalaman pemrograman fungsional akan membutuhkan waktu lebih dari satu minggu untuk dapat memperbaiki bug pertamanya dalam program Haskell.
Jimmy Hoffa
11
Saya masih berpendapat bahwa serangkaian konsep yang sangat mendasar cukup kompak. Setelah Anda memahami penulisan ulang istilah , Anda memiliki alat untuk mendefinisikan kalkulus lambda, kalkulus SK, mesin Turing, algoritma Markov, dll. Sejumlah kecil ide yang benar-benar mendasar dapat mencakup sebagian besar ilmu komputer. Tetapi, tentu saja, pengalaman diperlukan untuk dapat melihat pola-pola sederhana dalam hal-hal yang tampaknya rumit.
SK-logic
4
Saya akan mengatakan itu bukan efek Dunning – Kruger, hanya dengan mengasumsikan bahwa "bahasa pemrograman" = "bahasa pemrograman c-style". Setelah mengetahui jumlah yang layak dari c ++, jumlah yang layak dari C #, dan beberapa smatterings dari perl dan python, saya berharap saya bisa menjadi cukup fasih di Jawa, PHP, dll dalam seminggu. Belum tentu ahli, tapi setidaknya cukup lancar. Aku tidak mengambil javascript dalam beberapa hari. Pada titik itu, ini terutama tentang mempelajari perbedaan di antara mereka. Catatan: bahasa dunia nyata yang paling populer adalah c-like. Hal yang sama tidak selalu benar, katakanlah, Prolog.
neminem
2
@WayneWerner Serius, perbedaan antara bahasa Haskell atau Prolog dan algol jauh lebih banyak daripada sintaksis, Anda hanya mengabadikan mitos. Ikuti tes saya di atas: Habiskan seminggu mencoba mempelajari Haskell dan lihat bagaimana itu bekerja untuk Anda. Jujur, itu akan baik untukmu, banyak belajar dari melakukannya.
Jimmy Hoffa
51

... bagaimana saya bisa mengembangkan keterampilan pemrograman yang dapat diterapkan ke semua bahasa, bukan hanya satu?

Kunci dari pertanyaan ini adalah untuk melampaui bahasa dan berpikir bukan bahasa yang Anda kodekan.

WAT?

Pemrogram poliglot berpengalaman berpikir dalam pohon sintaksis abstrak (AST) dari model mental bahasa mereka sendiri. Orang tidak berpikir "Saya perlu loop untuk di sini", melainkan "Saya perlu mengulang sesuatu" dan menerjemahkannya ke yang sesuai untuk, atau sementara, atau iterator atau rekursi untuk bahasa itu.

Ini mirip dengan apa yang dilihat seseorang dalam mempelajari bahasa lisan. Orang-orang yang berbicara banyak bahasa dengan lancar memikirkan artinya , dan itu muncul dalam bahasa yang diberikan.

Seseorang dapat melihat beberapa petunjuk AST ini dalam sepasang video eyecracking Pemahaman Kode dengan Eye Tracking dan Eye-Tracking Code Experiment (Novice) di mana gerakan mata seorang pemula dan programmer berpengalaman ditonton. Orang dapat melihat programer yang berpengalaman 'mengkompilasi' kode ke dalam model mental mereka dan 'menjalankannya' di kepala mereka, sedangkan pemula harus beralih pada kata kunci kode dengan kata kunci.

Dengan demikian, kunci dari pertanyaan untuk mengembangkan keterampilan pemrograman untuk diterapkan ke semua bahasa adalah untuk belajar beberapa bahasa sehingga seseorang dapat menjauhkan diri dari memiliki model mental dari satu bahasa dan mengembangkan kemampuan untuk menghasilkan AST untuk masalah mereka sendiri di bahasa kepala yang kemudian diterjemahkan ke bahasa tertentu.

Setelah seseorang memiliki kemampuan untuk menggunakan AST di kepala, belajar bahasa lain dalam aliran pemikiran yang sama (pergi ke Befunge adalah sedikit lompatan dari Jawa, tetapi tidak sebanyak dari Forth ) menjadi lebih mudah - itu 'hanya' menerjemahkan AST ke bahasa baru yang jauh lebih mudah pada waktu ke 3, 4 dan 5 (dll ...) selesai.


Ada artikel klasik, Programmer Nyata Jangan Gunakan Pascal . Bagian dari ini berbunyi:

... Programmer Nyata yang ditentukan dapat menulis program Fortran dalam bahasa apa pun

Ada juga bit yang Anda tidak bisa hanya menggunakan AST mental - Anda perlu berpikir dalam bahasa itu juga. Ini membutuhkan sedikit waktu untuk menyelesaikannya (saya masih dituduh menulis kode Perl dengan Python dan kode Lisp pertama saya ditinjau mengatakan "Ini adalah program C yang sangat bagus.").

Untuk ini, saya harus menunjukkan artikel yang diterbitkan oleh ACM, Bagaimana Tidak Menulis Fortran dalam Bahasa Apa Pun . Paragraf ketiga artikel (yang tidak memimpin kutipan) langsung menjawab pertanyaan:

Ada karakteristik pengkodean yang baik yang melampaui semua bahasa pemrograman untuk tujuan umum. Anda dapat menerapkan desain yang baik dan gaya transparan di hampir semua kode, jika Anda menerapkannya. Hanya karena bahasa pemrograman memungkinkan Anda untuk menulis kode yang buruk tidak berarti Anda harus melakukannya. Dan bahasa pemrograman yang telah direkayasa untuk mempromosikan gaya dan desain yang baik masih dapat digunakan untuk menulis kode yang buruk jika pembuat kode cukup kreatif. Anda dapat menenggelamkan diri di dalam bak mandi dengan satu inci air di dalamnya, dan Anda dapat dengan mudah menulis program yang benar-benar tidak dapat dibaca dan tidak dapat dipelihara dalam bahasa tanpa goto atau nomor garis, dengan pengecualian penanganan dan jenis generik dan pengumpulan sampah. Apakah Anda sedang menulis Fortran atau Java, C ++ atau Smalltalk, Anda dapat (dan harus) memilih untuk menulis kode yang baik daripada kode yang buruk.

Tidak hanya cukup untuk memiliki AST - perlu memiliki AST yang dapat diterjemahkan ke dalam bahasa lain. Memiliki Fortran AST di kepala Anda dan menulis kode Fortran di Jawa bukanlah hal yang baik. Seseorang juga harus cukup akrab dengan bahasa dan idiom-idiomnya untuk dapat berpikir dalam bahasa tersebut (terlepas dari apa yang saya katakan di bagian paling atas).

Saya telah melihat kode Java yang ditulis oleh seseorang yang tidak berhenti menulis kode C. Ada satu objek dengan metode utama. Dalam objek ini ada banyak metode statis yang dipanggil oleh main, dan kelas dalam pribadi yang memiliki bidang publik (dan dengan demikian tampak sangat mirip struts). Itu kode C yang ditulis dalam Java. Semua yang dilakukan adalah menerjemahkan sintaks dari satu bahasa ke bahasa lain.

Untuk melewati titik ini, seseorang harus terus menulis kode dalam berbagai bahasa, tidak berpikir dalam bahasa tersebut ketika mendesain kode, tetapi berpikir di dalamnya ketika menerjemahkan desain ke dalam kode untuk bekerja dengan idiom bahasa dengan benar.

Satu-satunya cara untuk sampai ke sana - bisa mengembangkan keterampilan pemrograman yang dapat diterapkan ke semua bahasa - adalah untuk terus belajar bahasa dan menjaga bahasa pemrograman mental fleksibel daripada dihubungkan ke satu bahasa.

(Aku minta maaf pada ChaosPandion karena meminjam banyak dari ide yang disajikannya .)

Komunitas
sumber
3
Tidak perlu meminta maaf. Saya pikir Anda telah menulis jawaban yang mengesankan.
ChaosPandion
Saya ingin memuji orang yang membuat saya berpikir ke arah itu untuk menulis jawabannya.
3
Ini jawaban yang sangat bagus. Seandainya saya bisa membesarkan dua kali.
Wayne Werner
2
Sebenarnya ini adalah alasan mengapa Anda tidak harus belajar OO terlebih dahulu, karena ini memformat otak Anda dengan AST terburuk yang bisa Anda bayangkan.
Morg.
1
@JimmyHoffa - Anda mungkin benar. Awalnya saya selalu diajarkan menggunakan satu bahasa dan perlahan-lahan memperkenalkan lebih banyak nanti. Tetap saya pikir itu perlu ditelusuri karena saya selalu dapat menginjak rem dan membuatnya fokus pada satu bahasa. (SML sepertinya pilihan yang cukup bagus sebenarnya.)
ChaosPandion
12

Pilih bahasa, dan mulai koding. Python adalah pilihan yang baik untuk pemula, dan ada tutorial yang tersedia secara online , sehingga Anda dapat belajar bagaimana melakukannya dengan benar.

Segalanya mengikuti dari itu. Minat Anda akan mengarahkan Anda ke kerangka kerja dan konsep desain yang akan menambah kecanggihan program Anda. Anda akan menemukan bahwa ada kursus online yang dapat Anda ambil yang akan memberi Anda landasan dan teori, dan bahwa ada berbagai paradigma pemrograman yang dapat Anda jelajahi, dan seterusnya.

Dan ya, Anda akan menemukan bahasa seperti Haskell yang akan mengajarkan Anda sesuatu yang baru, setelah Anda memiliki dasar yang kuat dalam fundamental.

Beberapa programmer mungkin berpikir bahwa semua bahasa adalah sama karena mereka tidak terpapar dengan bahasa yang membuat mereka berpikir secara berbeda. Semua bahasa yang paling umum digunakan berasal dari Algol (mereka pada dasarnya adalah bahasa prosedural), dan dari mereka, sebagian besar adalah bahasa penjepit keriting mirip dengan C. Semua dari mereka melakukan hal-hal yang pada dasarnya sama, meskipun beberapa dengan kecanggihan lebih dari yang lain.

Robert Harvey
sumber
2
Tapi ini tidak benar? Beberapa bahasa pemrograman menyandikan semuanya sebagai fungsi murni (termasuk keputusan + putaran). Lainnya dapat dimodelkan dengan mendorong dan meletupkan objek dari set, dll.
jozefg
1
Apa yang tidak benar Anda harus belajar cara merangkak sebelum dapat berjalan atau berlari.
Robert Harvey
1
Ah saya harus menentukan, maksud saya paragraf terakhir, saya setuju dengan sisa jawabannya
jozefg
1
Saya telah mengganti paragraf terakhir dengan paragraf yang lebih baik menggemakan sentimen saya.
Robert Harvey
5

Pemrograman adalah tentang pemecahan masalah sedemikian rupa sehingga solusinya dapat diekspresikan dalam tata bahasa yang terbatas sehingga dapat diimplementasikan dengan bahasa pemrograman. Karena itu seni pemrograman adalah seni memecahkan masalah.

Bahasa tertentu mengundang paradigma pemrograman lain seperti orientasi objek, event-driven, multi-threaded dan kerangka kerja MVC. Ini semua hanyalah model dan pola dan tidak ada hubungannya dengan implementasi.

Jika Anda dapat duduk dan menyelesaikan masalah di atas kertas sedemikian rupa sehingga dapat dengan mudah diterjemahkan ke dalam kode dan dikaitkan dengan model yang sesuai untuk platform Anda, maka Anda adalah seorang programmer. Jika semua yang Anda bisa lakukan, ambil solusi itu dan terapkan dalam bahasa pilihan kami, maka itu masalah lain.

Saya telah pemrograman selama 30 tahun (OMFG!) Dan masih digunakan php.netuntuk mencari perintah di PHP karena itu bukan bahasa pertama saya.

Saya akan mengatakan bahwa keahlian dalam bahasa berbanding terbalik dengan seberapa sering Anda melihat manual atau stackoverflow. Keahlian dalam pemrograman adalah seberapa mudah Anda memecahkan masalah dengan cara yang kompatibel dengan bahasa pemrograman komputer.

Dalam berita terkait, saya belajar Ruby minggu lalu. Meskipun saya bukan "ahli", saya dapat memecahkan masalah yang bisa saya tulis dalam Perl, katakan, dan kemudian menghabiskan waktu menerjemahkannya ke Ruby sementara saya mempelajarinya lebih lanjut.

stevemarvell
sumber
Komentar Anda adalah yang pertama saya baca tentang model dan pola! Saya 100% dengan komentar Anda, satu hal adalah mendapatkan bahasa dan mulai membuat program. Yang lain adalah berpikir melalui masalah dan menemukan alat yang tepat untuk menyelesaikannya, kemudian Anda mulai mencari bahasa dan mulai pemrograman.
3

Saya pikir, seperti apa pun, latihan menjadi sempurna. Hanya saja, jangan mengacaukan diri sendiri untuk selalu melakukan hal yang sama atau selalu menggunakan bahasa yang sama dan terus belajar hal-hal di setiap proyek.

Saya pikir Anda dapat dengan mudah menggambar sejajar dengan sesuatu seperti belajar bermain gitar. Musisi yang baik dapat belajar memainkan lagu baru dalam waktu yang sangat singkat, karena mereka sudah tahu semua akord dan semua teori di balik mengapa akord dimainkan seperti apa adanya. Bagaimana mereka bisa mendapatkan itu? Mereka baru saja memainkan begitu banyak lagu sehingga semua pola baru saja dicampur bersama, sementara pada saat yang sama menambah pengetahuan mereka dengan teori terdokumentasi yang sebenarnya sehingga pola-pola itu berlangganan juga.

Jadi mungkin Anda bisa memainkan beberapa lagu dengan sangat baik, tetapi Anda tidak bisa menyimpang atau mengambil lagu baru dengan cepat. Ini mungkin setara dengan .NET programmer yang terus membuat aplikasi CRUD yang sama berulang-ulang, pada titik tertentu mencoba sesuatu yang baru, menambahkan beberapa panggilan layanan web atau UI canggih, atau menulisnya dalam bahasa yang sama sekali baru. Ketika Anda menemukan halangan mengapa hal-hal terjadi seperti yang mereka lakukan, mengajukan pertanyaan di Stack Exchange, dll. Akhirnya, Anda akan melihat semua pola yang terus muncul dan mengetahui beberapa teori yang mendasarinya dan mempelajari bahasa baru tidak akan tampak hampir sama menakutkannya.

KDiTraglia
sumber
1

Saya tidak akan memberi tahu berapa lama waktu yang dibutuhkan untuk belajar bahasa atau apa artinya belajar bahasa, sebaliknya saya akan membahas masalah Anda yang sebenarnya: bagaimana menentukan apakah Anda telah belajar memprogram atau telah mempelajari bahasa pemrograman .

Anda telah belajar memprogram jika Anda telah belajar untuk memecah masalah menjadi proses diskrit dan kemudian menggunakan proses tersebut untuk menyelesaikan masalah Anda. Anda telah mempelajari bahasa pemrograman jika Anda telah mempelajari sintaks suatu bahasa dan tahu bagaimana menyesuaikan cara suatu proses bekerja, ketika diimplementasikan dalam bahasa itu.

Ini bukan untuk mengatakan Anda harus memprogram dalam Fortan saat menggunakan Lisp atau menjumlahkan nilai-nilai kolom dalam tabel dalam db menggunakan kursor. Hanya saja bahasanya adalah detail implementasi. Satu yang dapat mengubah proses apa yang dibutuhkan, tetapi bukan kebutuhan untuk mengidentifikasi dan menciptakan proses - pada akhirnya ada implementasi dunia nyata, dengan input / output dan hasil yang diinginkan.

jmoreno
sumber
1

Strategi saya selalu berfokus pada keterampilan murni daripada keterampilan khusus.

Alih-alih mempelajari sintaksis khusus Python (atau bahasa apa pun) untuk apa pun yang ingin Anda lakukan, habiskan siklus otak Anda untuk menyelesaikan masalah abstrak, seperti cara terbaik untuk menyelesaikan setiap masalah dalam kategori itu.

Dengan begitu, Anda akan tahu apa yang harus dilakukan apa pun bahasanya, dan sebagian besar akan memiliki keterampilan abadi yang dapat digunakan untuk pemrograman dalam bahasa apa pun.

Khususnya menghindari alat yang penuh dengan gotcha, seperti MySQL, atau bahasa yang disarankan, seperti Java, karena apa pun yang Anda pelajari dengan menggunakan alat ini akan memiliki sebagian besar pengetahuan khusus alat yang pasti akan menjadi tidak berguna cukup cepat.

Bertentangan dengan apa yang telah dikatakan dalam banyak jawaban, JANGAN dengarkan programmer lain, Anda seorang noob dan tidak ada cara Anda bisa mengatakan yang palsu dari real deal, jadi Anda lebih baik mengambil semuanya dengan sendok garam.

Anda ingin selalu mempertanyakan dan menerima hanya ketika solusinya cepat, elegan, dan dapat diandalkan.

Morg.
sumber
1
"JANGAN dengarkan programmer lain" - ya tentu. "- Bagaimana Anda tahu jika Anda telah menulis kode yang mudah dibaca dan mudah dikelola? - Rekan Anda memberi tahu Anda setelah meninjau kode. Dasar Pemikiran: Anda tidak dapat menentukan ini sendiri karena Anda tahu lebih banyak sebagai pembuatnya daripada yang dikatakan oleh kode itu sendiri. Komputer tidak dapat memberi tahu Anda, karena alasan yang sama dengan itu tidak dapat mengatakan apakah sebuah lukisan itu seni atau bukan. Oleh karena itu, Anda memerlukan manusia lain - yang mampu memelihara perangkat lunak - untuk melihat apa yang Anda tulis dan memberikan pendapatnya ... " ( sumber kutipan )
agas
@gnat lakukan apa pun yang kamu suka. Saya hanya memberi tahu Anda bahwa karena sebagian besar programmer tidak dapat membuat kode untuk omong kosong, umpan balik mereka berpotensi berbahaya, dan Anda harus membawa tas dan kantong garam untuk mengatasinya. Saya juga percaya "dapat diedit dan dibaca oleh orang bodoh" bukanlah tanda kualitas sama sekali. Percayalah apa yang Anda inginkan tetapi jangan berkeliling -1 hanya karena orang tidak setuju dengan visi Anda.
Morg.
suara saya menunjukkan evaluasi kualitas posting , bukan apakah saya setuju atau tidak setuju (wrt perjanjian, saya pikir Anda ada benarnya di sini). Saya mengutip pendapat lain bukan karena itu berlawanan, tetapi karena memiliki penjelasan yang kuat (lihat "RATIONALE"). Jika Anda bisa memikirkan penjelasan yang sama kuatnya untuk mendukung pendapat Anda, pertimbangkan untuk mengedit posting untuk menambahkannya
gnat
Masa bodo. konten> formulir. simpan formulir Anda, saya akan menyimpan konten saya.
Morg.
0

Ada pendekatan teoretis. Belajar tentang bagaimana sebenarnya komputer bekerja di bawah penutup. Bagaimana instruksi prosesor dasar dirangkai bersama untuk membuat operasi dan struktur yang lebih kompleks yang kita terima begitu saja di tanah pemrograman tingkat tinggi.

Lalu ada pendekatan pemrograman yang lebih praktis. Poin utama yang sering dialami orang-orang yang dilabeli sebagai "programmer tidak baik" adalah bahwa mereka hanya benar - benar tahu satu bahasa. Dan bahkan jika mereka mengenal orang lain, mereka memprogram di dalamnya dengan cara yang sama mereka lakukan dengan bahasa ibu mereka . Itu adalah siklus yang harus diputus jika mereka benar-benar ingin belajar cara memprogram. Jawaban default untuk itu adalah belajar setidaknya satu bahasa dari setiap paradigma pemrograman. Jadi pelajari bahasa OOP, bahasa fungsional, bahasa scripting ... dll. Dan dengan belajar saya tidak bermaksud mempelajari sintaksis . Anda belajar bahasa dengan benar-benar menggunakannya untuk membuat sesuatu.

Secara pribadi, ketika saya ingin belajar bahasa baru saya menggunakan puzzler Project Euler . Saya membuka teka-teki yang sudah saya pecahkan dalam bahasa OOP (sebagai contoh) dan mencoba menyelesaikannya dengan menggunakan fungsional saat mencoba mengikuti praktik terbaik dari bahasa baru. Ketika Anda memecahkan masalah yang sama menggunakan dua pendekatan yang berbeda secara mendasar, Anda tidak hanya melihat apa perbedaan nyata, tetapi mereka juga menunjukkan di mana area umum berada. Area umum ini yang dimiliki oleh semua bahasa adalah pemrograman yang sebenarnya , perbedaannya hanyalah berbagai cara untuk mencapainya.

Sistem Down
sumber
4
Saya tidak akan menyebut belajar tentang perilaku fisik komputer sebagai "pendekatan teoretis", "pendekatan teoretis" akan mempelajari teorinya, membaca tesis gereja-turing dan belajar tentang kari karib isomorfisme, mempelajari kalkulus lambda dan dasar-dasar teori bilangan, ini adalah dasar teoretis. Tidak mengatakan jawaban Anda benar atau salah, hanya mengatakan saya akan menyebutnya sebagai pendekatan konkret bukan teoretis karena tidak memiliki teori.
Jimmy Hoffa
@JimmyHoffa - Poin bagus!
Sistem Down
1
"Bagaimana instruksi prosesor dasar dirangkai bersama (...)" sepertinya ide yang buruk untuk pemula (OP tidak menyatakan dia adalah satu tetapi mari kita asumsikan demi argumen. Itu akan mengajarkan 'optimasi mikro' tanpa benar-benar mengajarkan bagaimana untuk mengoptimalkan (3-5 tahap arsitektur dapat dianggap agak ketinggalan jaman ...). Jangan salah paham - CA menarik - tetapi penghargaan 'tepat' akan membutuhkan kata-kata seperti 'out-of-order' dan 'multiscalar', dan mungkin datang setelah beberapa pengalaman pemrograman dasar
Maciej Piechotka
0

Yah, sebagian besar hal yang ingin saya katakan sudah dikatakan. Yang ingin saya tambahkan adalah analogi yang sangat sederhana.

Jika bahasa pemrograman dianggap sebagai alat belaka, itupun sama sekali tidak ada logika untuk menjadi baik pada satu membuat menjadi baik pada yang lain cakewalk.

Pertimbangkan saja sekelompok pendekar pedang terkenal, tiba-tiba meletakkan pedang mereka dan pergi berperang dengan tombak setelah 7 hari pelatihan. Apa yang akan terjadi? Mereka akan dibantai.

Bahasa seringkali tidak sulit untuk dipelajari tetapi butuh kesabaran dan olahraga untuk menjadi ahli. Selain itu, tidak ada cara yang tepat untuk belajar pemrograman.

Mempelajari pemrograman seperti memainkan game RPG. Terkadang Anda menggunakan pedang, terkadang tombak, terkadang perisai. Setiap musuh yang Anda bunuh, Anda mendapatkan poin pengalaman. Setelah Anda memiliki poin pengalaman yang cukup, Anda naik level. Menguasai pedang sekarang tidak akan membuat Anda sempurna dengan busur dan anak panah. Tetapi sebagian dari pengalaman yang Anda dapatkan sebelumnya akan meningkatkan stamina dan kecepatan Anda.

Berikut adalah beberapa hal yang mungkin ingin Anda lakukan ketika belajar bahasa.

  • Baca tentang bahasanya. jika kedengarannya menarik, cobalah aplikasi hello world sendiri.
  • Baca beberapa tutorial, trik, blog.
  • Buat aplikasi sederhana di dalamnya hanya untuk bersenang-senang.
  • Uji berbagai fitur.
  • Jika Anda benar-benar menyukainya, belilah beberapa buku dan / atau tutorial video.
  • Cari perpustakaan yang bagus.
  • Cari jawaban, tanyakan hanya jika Anda tidak dapat menemukan jawabannya.
  • Bantu orang lain meminta jawaban (di mana lebih baik daripada di sini?)
  • Buat sesuatu yang bermanfaat. Membuat aplikasi kalkulator mungkin merupakan latihan yang baik tetapi jika Anda membuat aplikasi daftar TO-DO dan benar-benar Anda gunakan pada PC / Telepon Anda, rasanya 100 kali memuaskan.

Rasakan bahasa baru, jelajahi perpustakaan baru, pelajari trik baru di waktu luang Anda. Sebelum Anda menyadarinya, Anda akan mengejutkan diri sendiri dengan keterampilan Anda sendiri.

Sayem Shafayet
sumber
0

Dalam kasus saya, saya belajar bagaimana sebenarnya memprogram melalui yang berikut:

  1. Belajar dari para master. Dengarkan podcast pemrograman, baca blog profesional dalam topik pemrograman pilihan Anda, baca / tonton tutorial hebat yang dilakukan oleh guru yang tersebar di seluruh web dan terakhir, baca buku-buku epik seperti The Pragmatic Programmer . Buku ini memiliki banyak permata pemrograman yang telah terakumulasi sepanjang karier penulis. Satu cara pasti untuk mempelajari cara membuat kode adalah dengan mengetahui bagaimana programmer lain yang berhasil melakukannya.
  2. Pengalaman dengan melakukan. Membaca dan mengetahui adalah satu hal, sebenarnya mempraktikkannya dan membuatnya berfungsi adalah hal lain. Tidak ada guru yang lebih baik daripada pengalaman, jadi kenakan tutup kode Anda dan mulai.
  3. Tanya seseorang yang tahu. Sama seperti yang Anda lakukan sekarang, jangan takut untuk bertanya tentang praktik terbaik atau cara yang lebih baik untuk melakukan hal-hal dari senior di tim Anda, atau jika Anda kurang beruntung untuk tidak memiliki akses ke senior atau mentor atau guru, maka masih ada sisa stackexchange dan internet untuk ditanyakan.

Juga, seperti yang komentator Anda sebutkan, jangan lupa untuk menguasai alat Anda juga. Mempelajari semua praktik terbaik dan teori terhebat semuanya sia-sia atau akan diimplementasikan dengan buruk jika Anda tidak cukup tahu tentang alat Anda, dalam hal ini, bahasa pemrograman.

Maru
sumber
0

Saya pikir, jika Anda dapat berpikir secara analitis, Anda memiliki awal yang baik.

Pelajari bahasa apa pun yang Anda inginkan dan kerjakan sendiri melalui serangkaian contoh mis. Seperti disajikan dalam buku yang hampir selalu mengajarkan pemrograman.

Selanjutnya coba selesaikan masalah Anda sendiri. Cobalah untuk menemukan solusi yang berbeda dan bandingkan. Kecepatan dan penggunaan memori adalah faktor yang biasa digunakan. Diskusikan solusi Anda dengan programmer lain.

Baca kode programmer lain dan coba pahami mengapa mereka memecahkan masalah dengan cara ini.

Anda juga harus membaca beberapa buku tentang algoritma untuk mendapatkan gambaran umum tentang pendekatan standar. Masalah baru seringkali merupakan modifikasi dari masalah lama.

Banyak latihan dan bekerja dengan kode juga dalam tim akan membantu Anda meningkatkan keterampilan Anda langkah demi langkah.

Saya harap pendapat saya menjawab pertanyaan Anda setidaknya sebagian.

MrSmith42
sumber