Pada titik mana saya bisa mengatakan saya telah "belajar" bahasa?

67

Dalam beberapa tahun pemrograman saya, saya telah mempermainkan semuanya mulai dari Ruby hingga C ++. Saya telah melakukan segalanya mulai dari hanya belajar sintaksis dasar (Ruby) hingga menyelesaikan beberapa proyek besar (untuk saya) yang memperluas kemampuan saya dengan bahasa tersebut. Mengingat variasi ini (dan fakta bahwa benar-benar belajar bahasa tidak pernah berhenti), kapan saya bisa mengatakan saya tahu (atau telah belajar) bahasa?

Anak kucing
sumber
12
Saya pikir kata yang Anda cari adalah "menguasai" bahasa, "belajar" dalam konteks ini agak aneh.
Pieter B
7
"Kata-kata untuk makna: ketika kamu punya artinya, kamu bisa melupakan kata-katanya." - Zhuangzi
jfrankcarr
9
ketika Anda tidak harus mengajukan pertanyaan ini, Anda akan mempelajari apa yang perlu Anda ketahui ...
1
@JarrodRoberson Apakah Zhuangzi ini yang mengatakan itu juga?
jadkik94
2
Menurut LinkedIn, ada bilah yang sangat rendah untuk memasang bahasa pemrograman pada resume keahlian Anda ... Menurut orang LinkedIn saya yang pernah melihat kode Java sebelum tampaknya merasa nyaman mendaftar di bagian keahlian mereka.
Chris Dale

Jawaban:

70

Pada titik mana Anda dapat mengatakan bahwa Anda telah "belajar" bahasa seperti Inggris atau Prancis? Saya pikir kebanyakan orang akan menerima bahwa Anda telah belajar bahasa ketika Anda bisa menggunakannya untuk berkomunikasi. Anda tidak harus tahu setiap kata atau mengerti setiap idiom, tetapi Anda harus tahu sebagian besar (sebagian kecil) dari bahasa yang digunakan orang dalam percakapan sehari-hari. Setelah "mempelajari" suatu bahasa sejauh itu, Anda dapat terus belajar lebih banyak saat Anda menggunakan bahasa itu setiap hari dan membuka diri Anda untuk semakin banyak menggunakannya. Pada saat Anda mati, Anda masih tidak akan tahu semua yang perlu diketahui tentang bahasa tersebut, tetapi tidak ada yang akan mengatakan bahwa Anda tidak pernah "mempelajari" bahasa tersebut.

Jadi, saya pikir, dengan bahasa komputer. Anda dapat mengatakan bahwa Anda "tahu" bahasa seperti C ++ atau Ruby ketika Anda dapat menulis program yang bermanfaat di dalamnya. Jika Anda perlu mengukur tingkat pengetahuan bahasa Anda, gunakan istilah yang sama dengan yang Anda gunakan untuk bahasa manusia. Katakan "Saya tahu sedikit C ++" atau "Saya tahu percakapan C ++" atau "Saya fasih dalam C ++" artinya Anda cukup tahu untuk mengorek, cukup untuk menyelesaikan hal-hal berguna, atau Anda seorang ahli, masing-masing.

Caleb
sumber
15
Istilah percakapan dan fasih agak subyektif dan sementara sesuai untuk bahasa alami, sulit untuk melihat apa artinya ketika diterapkan pada bahasa komputer. Meskipun masih subyektif, fungsional dan idomatik dapat bekerja lebih baik. Fungsional menyiratkan bahwa Anda tahu sintaks cukup baik untuk menulis konstruksi yang berguna, sementara memiliki pengetahuan idiomatik menyiratkan bahwa Anda tidak hanya tahu cara menulis dalam bahasa tetapi juga tahu cukup baik untuk menggunakan idiom bahasa, seperti menggunakan usingdalam C # atau b, a = a, bdan generator dengan python. Kalau tidak, +1.
Mark Booth
13
@ MarkBooth Penjelasan singkat apa pun tentang skor pada suatu ujian akan agak subyektif. Intinya adalah menggunakan keakraban yang sudah dimiliki kebanyakan orang dengan tingkat pengetahuan tentang bahasa manusia sebagai panduan kasar untuk pengetahuan tentang bahasa komputer, dan untuk melakukannya dengan cara ramah yang mengundang penyelidikan lebih lanjut. Percakapan C ++ adalah singkatan untuk "Saya terbiasa dengan dasar-dasarnya, tetapi Anda mungkin perlu membantu saya dengan kode canggih, tidak jelas, atau rumit."
Caleb
3
Meskipun saya pikir Anda sebagian besar benar, saya pikir banyak orang salah menganggap mereka telah belajar bahasa alami ketika mereka masih memiliki tingkat yang menyedihkan. Dan itu berlaku juga untuk orang-orang yang mengatakan mereka telah belajar bahasa pemrograman.
haylem
Saya pikir jawaban Anda sempurna, bahkan menunjukkan betapa tidak mungkin untuk mengukur pengetahuan bahasa. Memang, walaupun fasih berarti Anda dapat berbicara tentang apa saja, dengan sebanyak mungkin penjelasan yang diperlukan oleh penutur asli, ini tidak membahas fakta bahwa sebagian besar penutur asli tidak memiliki sepersepuluh dari pengetahuan bahasa yang dimiliki oleh penulis tua yang baik (tidak ada , bukan harry potter atau dan brown, gaya lama susah dibaca). Bagaimana Anda mengatasinya, padahal sebenarnya tidak ada yang peduli untuk mengatasinya untuk bahasa? dan ketika sebenarnya itu sangat mempengaruhi produktivitas dalam pemrograman?
Morg.
1
@Morg. Benar-benar sampah. Pemrograman sama banyak tentang berkomunikasi dengan programmer masa depan (termasuk diri Anda sendiri) seperti halnya dengan memberi tahu komputer apa yang harus dilakukan. Tentu saja, menulis satu kode saja mungkin tidak perlu dikomunikasikan dengan baik, tetapi di dunia nyata yang memperjelas niat Anda kepada pengelola kode di masa mendatang jauh lebih penting daripada membuat komputer melakukan hal yang benar. Lagi pula, komentar ini tidak lagi berfungsi untuk membantu meningkatkan jawaban ini, jadi saya sarankan agar kami membawanya ke Obrolan Rekayasa Perangkat Lunak jika Anda ingin membahasnya lebih lanjut.
Mark Booth
25

Tergantung siapa yang bertanya

Orang yang bertanya dengan sopan memiliki gagasan tertentu tingkat keterampilan apa yang diharapkan dari seseorang yang mengatakan bahwa ia telah "belajar bahasa."

Pada dasarnya, saya menemukan dua skala pola dasar, di mana orang menilai jawaban atas pertanyaan "apakah Anda sudah belajar X?"

Bagi kebanyakan kutu buku, ini adalah pertanyaan jebakan untuk menyingkirkan masalah. Ini sudah ditunjukkan oleh jawaban lain untuk pertanyaan Anda;). Jika Anda mengatakan Anda mempelajarinya, Anda gagal dalam melihat ruang lingkup tugas, yang secara implisit "kesempurnaan", dan, jauh lebih buruk: Anda gagal dalam kerendahan hati.

Bagi sebagian besar bos, Anda "telah mempelajarinya", jika Anda dapat menyelesaikan masalah mereka , kriteria seringkali sudah terpenuhi jika kode Anda dikompilasi. Menjawab pertanyaannya dengan cara yang rendah hati akan menuntunnya menugaskan tugas kepada seorang masalah sulit yang mungkin juga seorang kerabat.

Jadi, apa audiens Anda?

keppla
sumber
4
Dalam wawancara, Anda tahu itu jika Anda mengetahuinya. Di tempat kerja, Anda tahu itu jika Google mengetahuinya.
asfallows
3
Dalam wawancara, "aku tahu itu" jika pewawancara memakai dasi, dan itu "tolong jelaskan 'untuk tahu'" jika dia tidak;). Agar adil, sebagian besar pewawancara bertanya apakah seseorang "memiliki pengalaman dengan", yang mana saya lebih mudah menjawab dengan "ya"
keppla
18

Saya pikir orang-orang berfokus pada finalitas kata "belajar" menjadi perfect tense itu berarti Anda sudah selesai belajar. Dan seperti yang dicatat semua orang, bahasa pemrograman adalah entitas yang hidup seperti bahasa lisan. Misalnya seseorang yang memiliki penguasaan lengkap C # 2 akan melihat C # 3 dengan LINQ, Lambdas, varkata kunci, inisialisasi objek / koleksi, dan metode ekstensi dan menemukan bahwa banyak yang telah berubah dari apa yang dia pelajari untuk versi sebelumnya. Hal yang sama terjadi dengan C # 4 dengan await, asynckata kunci dan konstruksi bahasa baru lainnya.

Dan kami hanya berbicara sintaks di sini. Kami lupa bahwa sebagian besar bahasa dipasangkan dengan kerangka kerja . C # memiliki framework .NET, Java memiliki framework sendiri, seperti halnya Ruby, C ++, PHP, dan PERL. Pikirkan kerangka kerja untuk suatu bahasa sebagai kosakata dan bahasanya sendiri hanyalah sintaksis. Mengetahui bahasa berarti Anda tahu cara membuat kalimat dalam bahasa tersebut. Mengetahui kerangka berarti Anda dapat mengekspresikan diri dengan baik dalam bahasa. Akhirnya, setelah Anda mengetahui sintaks dan kosa kata, Anda perlu mempelajari idiom sehingga Anda menulis kode sebagai "penutur asli".

Saya akan mengatakan ada beberapa level pembelajaran.

  1. Hello World (Anda dapat menulis program yang paling sederhana.)
  2. Mahir (Anda dapat menulis program dasar tetapi perlu berkonsultasi bantuan online secara teratur)
  3. Fasih (Anda dapat menulis program terlebih dahulu dengan beberapa referensi yang diperlukan).
  4. Penutur asli (Anda dapat menulis program lanjutan dengan bantuan online minimal, kode Anda tidak dapat dibedakan dari kode penutur asli lain).
Michael Brown
sumber
3
Nitpick: awaitberasal dari C # 5, hal baru utama dalam C # 4 adalah dynamic.
svick
Anda benar ... Saya terus kehilangan jejak versi C # mana yang sesuai dengan versi .NET
Michael Brown
7

Anda jarang bisa mengatakan Anda telah belajar bahasa. Itu berarti Anda sudah selesai belajar tentang itu, yang ... bodoh.

Mengatakan Anda tahu bahasa itu baik-baik saja ketika Anda dapat menulis kode yang tidak secara terang-terangan memecahkan idiom dalam bahasa tersebut (mungkin setelah satu minggu menghapuskan pengetahuan) tanpa merujuk ke referensi sintaksis.

Telastyn
sumber
2
Idiom berubah, gaya bervariasi dari satu tempat ke tempat lain, dan memang bahasa itu sendiri berubah seiring waktu. Jika Anda tidak dapat mengatakan bahwa Anda "tahu" atau "telah belajar" bahasa seperti C ++ sampai Anda selesai mempelajarinya, maka ada sangat sedikit orang yang bisa mengklaim telah belajar C ++.
Caleb
1
@ Caleb tepatnya.
Michael Brown
3
Jika Anda belajar seperti itu, maka Anda bahkan tidak tahu bahasa asli Anda, yang juga bodoh (setidaknya untuk sebagian besar orang)
superM
@ Caleb, lebih buruk dari itu, banyak bagian c ++ lebih baik ketika diabaikan, seperti yang ditunjukkan oleh Carmack dan Torvalds - jadi .. setelah mempelajari semua cpp sebenarnya tidak menguntungkan.
Morg.
3

Ini lebih merupakan faktor berbasis opini. Dalam semua istilah teknis "Belajar" akan berarti memiliki pengetahuan lengkap, seperti pada Anda akan diharapkan untuk mengetahui SEGALANYA bahasa.

Namun dalam dunia pemrograman saya percaya ini lebih tentang jika Anda dapat memprogram dengan lancar dalam bahasa untuk menyelesaikan tujuan / tugas. Ini juga mungkin berarti jika Anda merasa nyaman dengan bahasa tersebut. Tentu Anda bisa pergi ke sana dan mendapatkan gelar setelah bertahun-tahun kuliah, tetapi itu hanya untuk diperhatikan? Anda menentukan kapan Anda dapat mengatakan bahwa Anda telah mempelajari suatu bahasa.

Alec
sumber
2

Ketika Anda mulai memperhatikan kekurangannya. Setelah Anda mulai belajar bahasa, Anda biasanya masih sibuk belajar sekarang untuk melakukan hal-hal atau banyak terlibat di dalamnya untuk melihat di mana ia gagal (tentu saja, ini kecuali Anda mulai belajar dari sudut pandang negatif hanya untuk melihat seberapa buruk itu dibandingkan dengan bahasa favorit Anda sejauh ini). Saya katakan Anda tidak benar-benar tahu bahasa sampai Anda benar-benar menyadari area di mana ia gagal.

Ivan Voras
sumber
Saya tidak bisa setuju dengan itu. Mungkin benar untuk satu atau dua bahasa pertama yang Anda pelajari - Anda mungkin tidak tahu apa yang harus dicari, sehingga bahkan kegagalan desain yang paling mencolok tidak dapat dibedakan dari cara yang tepat untuk melakukan sesuatu. Setelah Anda mempelajari beberapa bahasa, Anda harus mulai dapat melihat kekurangan bahasa segera setelah Anda mulai belajar yang baru. Tetapi untuk sementara waktu dalam perkembangan Anda, Anda akan secara keliru menyamakan "berbeda" dengan "salah." Sampai Anda mempelajari beberapa bahasa dari setiap jenis utama (prosedural, OO, fungsional, deklaratif ...) penilaian langsung Anda akan dicurigai.
Warren Young
2

Jawaban pribadi saya untuk ini adalah kapan,

  1. Saya tahu dasar-dasar untuk menulis program tingkat produksi sederhana.
  2. Saya telah menghabiskan setidaknya 3 jam berturut-turut untuk menyelesaikan masalah yang tampak sederhana tetapi tidak.

Dari sana, saya tidak akan menyebutnya belajar, tetapi penguasaan.

dukeofgaming
sumber
1

Pada titik ketika aplikasi atau komponen Anda dapat membaca email, yaitu hukum Zawinski , yang menyatakan:

“Setiap program mencoba untuk memperluas hingga dapat membaca email. Program-program yang tidak dapat berkembang itu digantikan oleh yang bisa. "Diciptakan oleh Jamie Zawinski (yang menyebutnya" Hukum Pengembangan Perangkat Lunak ") untuk menyatakan keyakinannya bahwa semua program yang benar-benar bermanfaat mengalami tekanan untuk berkembang menjadi toolkit dan platform aplikasi (yang mailer, katanya, hanyalah efek samping dari itu).

Ini diperbarui ketika RSS menjadi populer untuk "... dapat membaca RSS feed" dan mungkin dapat diperbarui hari ini menjadi "... dapat membaca feed Twitter". ;-)

dodgy_coder
sumber
0

Saya pikir Anda telah belajar bahasa ketika Anda tidak melihatnya. Anda tidak melihat siklus dan akses data, tetapi alur kerja algoritma.

Anda tidak bermain trik dengan melewati parameter dan pemrosesan array, makro ajaib. Anda tidak menganggap kode Anda sebagai materi pemasaran mandiri untuk ditunjukkan kepada teman dan guru Anda, tetapi untuk mengekspresikan pemahaman Anda tentang suatu masalah, dan kemauan Anda ke komputer dengan cara yang paling mudah dibaca.

Anda memiliki kebiasaan yang membantu Anda menghindari banyak kesalahan hanya dengan mengikuti mereka, seperti: menggunakan {} blok kode dan () dalam ekspresi bahkan jika Anda benar-benar yakin bahwa "itu hanya akan menjadi satu baris" atau "Saya tidak bodoh dan tahu urutan prioritas operator ".

Anda berhenti menghitung berapa banyak kelas, pola, dan kerangka kerja API yang Anda tahu. Inilah intellisense, referensi dan tutorial, dan Google untuk. Tetapi ketika Anda melihat masalah, Anda segera tahu bagian mana yang dapat dipecah, dan dengan alat dan algoritma apa Anda akan menyelesaikannya.

Apa yang Anda lakukan berhasil , elegan dan kecil . Anda menikmati coding dan dengan mudah menemukan bug Anda. Ya, master juga membuat bug karena mereka adalah manusia - tetapi mereka menemukannya dengan cepat karena struktur kode mereka menuntun mereka ke tempat yang tepat.

Dan akhirnya sadari: Anda telah belajar berpikir, menganalisis, dan menyelesaikan masalah; dibandingkan dengan mereka, bahasa sebenarnya adalah sekunder, hanya kotak aturan dan alat saat ini.

Lorand Kedves
sumber