Sebagai orang bodoh yang diajarkan C #. Bagian 1


Rekam 1


Saya memutuskan untuk merekam. Terutama karena saya suka merekam. Meski tidak. Sebenarnya, saya ingin bercerita. Kisah pemrograman itu menarik. Fakta bahwa pemrograman tidak hanya bisa menjadi profesi, tetapi juga hobi yang hebat, seperti fotografi, catur, melukis atau bermain gitar. Bahwa tidak perlu memiliki bakat bawaan, negara adikuasa, atau pendidikan khusus bertahun-tahun untuk mencapai kemenangan kecil tapi besar dalam bisnis apa pun.

Ini adalah buku harian seseorang yang belajar pemrograman untuk bersenang-senang. Bukan untuk profesi, bukan untuk mencari nafkah. Saya tidak tinggal di Nigeria dengan telepon tombol dan saya tidak dalam situasi putus asa. Saya hanya belajar dan program hiburan di waktu luang saya dari pekerjaan dan urusan keluarga. Tampilkan secara real time. Diterbitkan dalam kumpulan 5 entri.

Untuk beberapa alasan, mentalitas yang sudah mapan (saya dan orang lain) melindungi kita dari eksperimen yang berani dengan sesuatu yang baru. "Aku tidak tahu caranya" terdengar seperti hukuman mati. Setiap hari saya melihat ini di tempat kerja, ketika rekan kerja dihadapkan dengan tugas yang tidak dikenal. Saya tidak tahu caranya. Akhir dari program.

Putra saya yang berusia tujuh tahun takut untuk mencoba kegiatan yang tidak dikenal. Karena dia tidak tahu caranya. Tetapi kita harus mengerti bahwa selama bertahun-tahun dia tidak tahu berapa banyak.

Kadang-kadang saya mengatakan kepadanya, β€œSobat, jika orang hanya melakukan apa yang mereka bisa, kita akan tetap tinggal di gua, dan secara khusus Anda akan menghabiskan sepanjang hari merenung, merangkak, dan buang kotoran di celana, daripada bermain Angry Birds. Meski tidak, Anda akan merangkak tanpa celana, karena tidak ada yang tahu cara menjahit . ”

Kenapa saya? Untuk fakta bahwa saya tidak tahu cara memprogram. Tapi saya akan belajar. Bukan karena saya ingin menjadi pengembang - saya sudah memiliki profesi. Tetapi karena saya bisa. Meski sebenarnya saya punya tiga alasan.

Yang pertama adalah meregangkan otak Anda. Saya yakin bahwa hidup tidak dapat dibangun di sekitar satu aktivitas. Adalah perlu untuk mengisi pikiran Anda dengan tugas yang berbeda. Dan semakin beragam mereka, semakin baik bagi pikiran.

Alasan kedua praktis. Saya akan menulis permainan (klise, ya), yang akan kami mainkan dan bersenang-senang dengannya. Kami sudah memiliki ide - pada iterasi terakhir kami mencoba membuat tongkat, tetapi mekanisme ternyata terlalu rumit.

Alasan ketiga adalah pendidikan. Saya akan mencoba mengubah sikap masyarakat terhadap pemrograman. Secara umum diterima bahwa pemrograman adalah takdir para profesional. Tidak ada yang memprogram sebagai hobi. Konsep "pemrograman amatir" (ingat kata ini) tidak ada sama sekali.

Sebagian pro membaca saya sekarang akan menyerang dengan komentar bahwa saya akan merendahkan profesi dan keterampilan yang diperoleh selama bertahun-tahun. Jangan terburu-buru. Untuk saat ini, percayalah padaku bahwa ini tidak benar, dan kami akan kembali ke topik ini nanti.

Singkatnya, saya memutuskan untuk belajar C #. Karena ide saya membutuhkan mesin, dan seperti yang saya mengerti, Unity adalah yang terbaik. Dan Unity adalah C #. Ini yang pertama.

Hal kedua yang saya sadari adalah bahwa memulai dengan Unity terlalu dini. Hampir semua materi pendidikan berasal dari fakta bahwa pembaca sudah terbiasa dengan bahasa. Dan yang saya tahu tentang C # adalah bahwa itu benar untuk mengatakan "Sea Sharp", dan bukan "Tse with a grid". Jadi mari kita mulai dengan bahasanya sendiri.

Hal ketiga yang saya sadari adalah pelatihan akan menyeluruh. Karena Sharpe adalah bahasa baru bagi saya, Anda memerlukan sesuatu "untuk boneka", tetapi tidak ada.

Ada buku teks "C # untuk anak sekolah" oleh Martin Dreyer, tetapi sama sekali tidak mungkin untuk membacanya. Pertama, keakraban dengan pemrograman dimulai dengan studi tentang kelas dan objek. Terlalu rumit dan tidak bisa dipahami. Kedua, dalam satu paragraf esensi ada tiga halaman contoh dari dunia nyata. Terlalu banyak. Saya belum siap untuk menghabiskan begitu banyak waktu pada cerita tentang seorang gadis di pulau terpencil meyakinkan robot alien untuk mendapatkan gajah untuk mengambil kelapa.

Ada satu lagi ekstrim. Pelajaran dari mycsharp.ru dan "Panduan Lengkap untuk Bahasa Pemrograman C # 8.0 dan .NET Core 3 Platform" di metanit.com/sharp/tutorial

Ada contoh kode dari mana Anda dapat menggunakan kembali sesuatu, tetapi contohnya terlalu abstrak seperti "Mari kita menulis sebuah program yang menempatkan objek a, b dan c dalam memori, itu sangat menarik!". Tetapi ini sedikit lebih baik daripada gajah dan kelapa, terutama karena saya memiliki metodologi pengajaran sendiri.

Secara umum, saya memutuskan bahwa saya bisa mengatasinya dan berangkat untuk menginstal Visual Studio.

Rekam 2


Semuanya berjalan sesuai rencana. Hari berikutnya, saya menangkap Layar Hitam. Saya tidak mengerti apa itu, tetapi sepertinya driver video diperbarui sebelum Windows dan ternyata tidak kompatibel dengan versi lama.

Pernah saya rapi dalam hal-hal seperti itu. Dengan masalah apa pun, saya hanya mengembalikan partisi OS dari gambar yang disiapkan dengan hati-hati, tapi itu sudah lama sekali. Windows menjadi lebih stabil, saya menjadi lebih ceroboh. Dan begitulah.

Saya menghabiskan seminggu mencoba untuk memperbaiki semuanya. Saya mencoba semua resep. Saya menemukan cara untuk menjalankan baris perintah, mendapatkan Far kuno, mentransfer file, pada upaya ketiga saya mengambil perakitan yang sesuai (saya menggunakan custom Windows) dengan pembaruan bermasalah yang sudah diinstal.

Di sini saya harus mengatakan beberapa kata tentang latar belakang saya. Saya tidak tahu cara memprogram, tetapi secara umum saya menganggap diri saya sebagai orang komputer. Sekitar 8 tahun, PC pertama dalam hidup saya muncul di tempat kami. Packard Bell 486. Dinginkan saat itu. Itu memiliki dua program - Leksikon dan akuntan Info.



Saya memainkan Lexicon.

Dari karakter I, / dan \ I menggambar trek balap, dan kursornya adalah mobil. Begitulah mainan yang dipakukan ke lantai. Tidak ada internet, tidak ada teman dengan komputer (pada awalnya). Saya bersenang-senang.

Selain dua program, komputer disertai oleh MS-DOS penuh pada setumpuk disket dan saya sering bereksperimen dengan tim yang berbeda. Saya menemukan yang disebut QBASIC.

Ada manual kecil di dasar, dan saya mengerti sesuatu. Dia belajar satu atau dua perintah, dan mampu menulis program yang menampilkan huruf apa saja di layar. Itu luar biasa.

Selain itu, ada pelajaran sains komputer di sekolah menengah. Turbo Pascal. Kami diajari menulis kode sungguhan. Tentu saja, di notebook. Tapi saya punya komputer (sudah beberapa Pentium) dan saya bisa berlatih.

Jadi saya bertemu dengan hal-hal yang paling mendasar. Jika-maka-lagi membangun dan loop. Puncak keterampilan saya adalah program Roulette. Roulette adalah permainan. Anda memilih angka dari 0 hingga 10 dan membuat taruhan. Tebak - bonus, tidak ada - kehilangan taruhan. Maka, sampai uang habis. Saya sangat bangga.

Namun demikian, saya adalah seorang humanis yang lengkap dan tidak mulai menghubungkan hidup saya dengan ilmu komputer. Jadi setelah percobaan sekolah, saya tidak memikirkan pemrograman selama sekitar 19 tahun.

Oh! Instalasi Visual Studio tampaknya selesai. Cantik sekali. Semuanya hitam. Mari kita cari tahu apa itu.

Rekam 3


Sebenarnya, ini bukan upaya pertama saya di pemrograman. Sekitar setahun yang lalu, kemauan sudah menimpa saya, dan saya mencoba VBA. Dia mampu menguasai sintaksis beberapa tim dan menulis roulette yang sama seperti di sekolah. Hanya lebih baik. Sekarang saya memiliki antarmuka grafis bidang dan tombol, serta fungsi untuk menyimpan dan memuat permainan (data disimpan dalam tabel excel).

Namun demikian, saya segera menjatuhkan kopernya. Sebagian besar, dari ketidakmampuan untuk menggunakan gambar secara normal, dan mungkin juga dari kemalasan. Saya tidak ingat persis. Bagaimanapun, kami akan menganggap pengalaman VBA saya semacam pemanasan. Sekarang saatnya untuk hardcore nyata.

Saya menghabiskan 4-5 malam di Sharpe. Saya membaca dua bab dari buku teks. Apa yang bisa saya katakan? Saya sama sekali tidak terinspirasi oleh pendekatan akademik yang didasarkan pada penulisan program yang tidak berguna yang melakukan komputasi abstrak. Saya tidak yakin bahwa saya bisa bangga dengan aplikasi yang mempertimbangkan luas segitiga.

Jadi saya datang dengan kurikulum saya sendiri. Dengan blackjack dan ... yah, hampir. Saya belajar beberapa perintah yang paling penting: Console.WriteLine untuk menampilkan label, Console.Readline untuk input keyboard, operasi aritmatika, konstruksi kondisional if-else, sementara loop, dan tentu saja Acak untuk angka acak.

Anda mungkin sudah menebaknya. Sekali lagi saya menulis konsol roulette :)



Sensasi sangat menyenangkan. Dia bekerja! Anda bisa kalah atau menang di dalamnya! Dan ini adalah program nyata - ia memiliki 68 baris kode yang tidak dapat dipahami, termasuk sebanyak 5 metode yang disebut.

Apakah itu sulit? Ya Saya membaca manual, membuat kesalahan dan menghancurkan segalanya, menghabiskan waktu berjam-jam mencari cacat, membaca manual lagi, menjadi bingung dalam kode dan menulis ulang semuanya beberapa kali, menyederhanakan konstruksi dalam loop dan menghapus variabel yang tidak perlu.

Tetapi hasilnya sepadan. Saya penuh harapan dan terus maju.

Rekam 4


Rintangan pertama. Saya sampai pada konsep kelas dan objek. Konsepnya benar-benar tidak bisa dipahami. Bagaimana ide itu sendiri menjadi jelas, tetapi bagaimana dan mengapa menerapkannya? Buat kelas untuk pemain, kasino, dan roulette? Lalu muncul dengan benda-benda di dalamnya? Dan apa yang akan mereka lakukan? Terlalu panjang Tampaknya tidak alami untuk sesuatu dan hanya membingungkan program.

Itu datang kepada saya dalam beberapa hari. Saya berjalan bersama putra saya di taman bermain dan memandang dunia sekitar dengan mata berorientasi objek.

class  {string Name;}, class  {string Name; int Age;}   = new  ();   = new  (); 

...

Dan kemudian saya mengerti segalanya. Program roulette saya terlalu bodoh dan primitif. Kelas tidak diperlukan di sana. Itu adalah latihan yang baik untuk mempelajari pemrograman prosedural, tetapi tidak lebih.

Itu perlu untuk datang dengan latihan baru untuk memahami kelas. Dan saya datang dengan. Di sini saya duduk di bangku dan menulis sendiri sebuah teka-teki di telepon. Buat RPG mini. Akan ada pahlawan dengan parameter kekuatan dan kesehatannya sendiri. Setiap belokan ia akan masuk ke gua baru dan bertemu troll di sana dengan parameternya sendiri. Mereka akan bertarung dengan melempar dadu, seperti dalam Never Interest. Dan di sana Anda dapat menemukan senjata dan baju besi.

Kelas utama bertanya sendiri:

  • Pahlawan (kekuatan, kesehatan, uang)
  • Item (kerusakan, baju besi, daya tahan)
  • Monster (Kekuatan, Kesehatan)

Itu harus menarik. Bisakah saya mengatasinya? Mudah Ayo pergi.

Rekam 5


Itu tidak berhasil dengan mudah. Saya dengan cepat membuat sketsa kelas dengan bidang. Saya mengetahui dari buku teks apa itu perancang dan membasmi perancang baju besi dan senjata. Saya membuat antarmuka, mencari tahu cara mengubah warna teks.

Sekarang saya memiliki salam, statistik pemain, senjata dan baju besi yang ditampilkan di layar saya. Ada menu tempat Anda dapat memulai langkah berikutnya atau keluar dari game.



Dan itu pun tidak mudah. Saya terus menerus menemukan kesalahan. Khusus ketika porting kode ke metode. Beberapa sampah tidak ada dalam konteks apa pun. Sampah lain tidak tersedia karena tingkat perlindungan ...

Saya benar-benar melewatkan semacam panduan untuk boneka tentang bagaimana menyusun kode. Di mana harus meletakkan metode untuk menghasilkan item? Ke Item kelas? Ke Program kelas? Cukup tinggalkan kode? Anda harus bereksperimen, menangkap, dan memperbaiki kesalahan.

Pisahkan dua hari aku disiksa dengan generator angka acak, yang memberiku perisai dan pedang dengan parameter yang sama. Saya menyadari bahwa solusi normal belum tersedia di pikiran saya dan berhenti selama satu detik antara dua generasi.

Kemudian euforia berakhir dan suatu kebodohan pun dimulai. Saya berhasil membuat dua item secara manual, menamakannya Weapon1 dan Armor1. Tetapi saya perlu melakukan ini setelah setiap gerakan, menyimpannya dalam inventaris, mengubah ... Bagaimana cara membuat objek secara terprogram? Bagaimana cara menghasilkan nama mereka dan, terlebih lagi, memilih parameter yang diperlukan untuk mengubah parameter mereka?

VBA lebih mudah. Internet penuh dengan contoh skrip untuk setiap tugas tertentu. Menemukan dan menggunakan kembali yang tepat bukanlah masalah. Sangat sering saya tidak mengerti sama sekali setengah dari kode yang ditulis, tetapi itu bekerja secara ajaib, dan kemudian saya harus mencari tahu.

Buku teks tidak membantu. Mereka sudah berbicara tentang ekspresi lambda dan multithreading, dan contohnya masih pada tingkat "Temukan jumlah semua angka genap dalam jumlah angka". Kebosanan Pencarian di internet juga tidak memberikan jawaban, karena bagaimanapun saya tidak merumuskan pertanyaan seperti itu.

Saya menduga bahwa Anda perlu menghubungkan database dan menulis objek di sana. Saya harus belajar SQL.

Source: https://habr.com/ru/post/id466641/


All Articles