Pernyataan If If Arrays, loops ... Sekarang bagaimana?

9

Saya menyerah pada pemrograman sedikit lebih dari setahun yang lalu ketika saya terus memukul dinding ini. Saya meninjau kembali subjek karena saya ingin membuat aplikasi Android dasar. Tetapi saya merasa bahwa pengetahuan saya yang terbatas tidak akan cukup.

Ini masalah saya.

Saya telah membaca beberapa buku dan menonton tutorial video di C # / Java, mengikuti contoh, lalu menyelesaikan buku. Pada akhirnya mereka sepertinya selalu membuatku tercengang tentang apa yang harus dilakukan selanjutnya.

Apa yang dimaksud adalah mereka mengajarkan Anda dari aplikasi "hello world" dasar Anda sampai dengan jika dan array maka tampaknya mengharapkan Anda untuk tahu bagaimana keluar ke dunia pengkodean dan membuat apa pun.

Apakah saya melewatkan sesuatu di sini? Saya tahu ini adalah blok bangunan semua program tetapi buku yang saya baca tidak pernah benar-benar menunjukkan kepada saya apa yang harus saya lakukan selanjutnya.

Jawaban yang mudah saya kira adalah 'memulai pengkodean', tetapi di mana? Saya membaca "Head First Java" misalnya; sampai pada bagian itu mereka memberitahu Anda mengambil semua yang telah Anda pelajari dan membuat game balap anjing ....

"Cobalah untuk tidak menipu dan melihat kode sumber yang disediakan, Anda seharusnya bisa melakukan ini sekarang" _ itu bukan kutipan yang tepat tetapi pada dasarnya itulah yang saya katakan .......

Setengah jam yang lalu mereka baru saja menjelaskan cara melakukan array, lalu tanpa teori saya dimaksudkan untuk membuat game yang berfungsi?

Alasan saya menanyakan hal ini adalah karena saya khawatir hanya inilah yang seharusnya saya ketahui untuk setidaknya mulai mengkode, namun rasanya saya telah diberi kotak peralatan kecil dan diperintahkan untuk membangun gedung pencakar langit.

Terima kasih atas sarannya

pengguna76625
sumber
"Game balap anjing" bisa berarti banyak hal. Sebagai permulaan, apakah ini melibatkan grafik? Selama apa yang Anda buat tidak melibatkan grafik apa pun maka saya akan berpikir itu sangat cocok untuk pemula. Mungkin melakukan hangman sebagai gantinya hanya untuk menghindari berpikir tentang gambar ...
jhocking
Sangat mungkin untuk membangun gedung pencakar langit dengan kotak peralatan kecil itu - program besar hanyalah kumpulan BANYAK bit yang terorganisir . Anda tidak akan bisa SEKARANG - Anda harus mulai membangun sangkar burung dan meningkatkannya. Seperti yang dikatakan jhocking, jangan mencoba melakukan apa pun dengan grafik - ada alasan bagus mengapa hal-hal awal selalu didasarkan pada teks yang tidak diformat.
Loren Pechtel

Jawaban:

10

Apa yang dimaksud adalah mereka mengajarkan Anda dari aplikasi "hello world" dasar Anda sampai ke jika dan array maka tampaknya mengharapkan Anda untuk tahu bagaimana keluar ke dunia pengkodean dan membuat apa pun.

Apakah saya melewatkan sesuatu di sini? Saya tahu ini adalah blok bangunan semua program tetapi buku yang saya baca tidak pernah benar-benar menunjukkan kepada saya apa yang harus saya lakukan selanjutnya.

Sebenarnya tidak. Mereka bukan. Blok bangunan semua program adalah abstraksi dan digunakan kembali. Banyak bahasa pemrograman bahkan tidak memiliki array atau ifs atau loop.

Ada beberapa buku hebat yang mengajarkan Anda cara memprogram yang bertentangan dengan cara kerja bahasa pemrograman tertentu, yang tampaknya merupakan buku yang telah Anda baca.

Cara Mendesain Program alias HtDP adalah buku semacam itu. Ini mengajarkan Anda, baik, bagaimana merancang program. Dan ini dilakukan dengan memberi Anda resep untuk diikuti bagaimana menganalisis masalah, menyelesaikannya, mengubahnya menjadi algoritma dan selanjutnya menjadi program kerja.

Perhatikan bahwa "resep" pada dasarnya adalah kata lain untuk "program", jadi dengan kata lain, buku ini mengajarkan Anda program untuk dijalankan oleh manusia agar dapat menghasilkan program yang akan dijalankan oleh komputer. Betapa kerennya itu? :-)

Para penulis saat ini sedang mengerjakan draft untuk HtDP edisi kedua , yang mungkin ingin Anda baca daripada edisi pertama. Materi tentang pemrograman imperatif telah dihapus, dan akan dibahas dalam volume kedua yang belum ditulis Bagaimana Cara Mendesain Komponen , tetapi Anda dapat membaca bab-bab yang hilang dari edisi pertama.

Perhatikan bahwa HtDP tidak memiliki pengetahuan pemrograman dan ditargetkan untuk siswa sekolah menengah. Tapi jangan biarkan itu menghentikan Anda: itu hanya berarti bahwa Anda mungkin akan dapat menyelesaikan beberapa bab awal lebih cepat, tetapi saya tidak berpikir Anda akan bosan.

Abstraksi Beton juga baik dibaca sepanjang vena yang sama. Seperti HtDP, itu tidak mengasumsikan pengetahuan pemrograman.

Buku lain yang mungkin Anda dengar disebutkan adalah Struktur dan Interpretasi Program Komputer alias SICP. Ini adalah salah satu buku pemrograman terbaik yang pernah ditulis, dan sekali lagi, ia tidak mengasumsikan pengetahuan pemrograman.

Hal ini , bagaimanapun, diarahkan untuk pemula lengkap yang studi di MIT . Dan, sementara itu tidak menganggap pengetahuan pemrograman, tidak menganggap sedikit domain pengetahuan, misalnya di bidang teknik elektro, fisika dan matematika. Catatan: ini tidak ada hubungannya dengan konsep yang diajarkan, mereka hanya perlu memahami latihan dan contoh . Jadi, mungkin lebih baik untuk membaca HtDP atau Abstraksi Beton terlebih dahulu, dan kemudian membaca SICP.

Jörg W Mittag
sumber
1
Saya belum pernah mendengar bahasa pemrograman tanpa ifpernyataan atau semacam loop: Tidak akan lengkap tanpa mereka.
Pasang kembali Monica - M. Schröder
@ Martin Schröder: Ada bahasa pemrograman tanpa looppernyataan dan mereka Turing lengkap.
Giorgio
@Iorgio: Misalnya? AFAIK Anda perlu beberapa jenis loop / goto.
Pasang kembali Monica - M. Schröder
2
@ MartinSchröder: Lambda Calculus adalah Turing-complete (pada kenyataannya, ini adalah bahasa tempat istilah itu ditemukan), dan hanya memiliki fungsi abstraksi dan aplikasi fungsi. Bahkan tidak memiliki rekursi, Anda harus menyandikannya menggunakan fixpoint combinator! Di sisi lain: ada banyak bahasa pemrograman yang tidak menyelesaikan-Turing, seperti SQL (sebelum 2003), atau lebih halus, C (Kelengkapan-turing membutuhkan penyimpanan tanpa batas, tetapi C menjamin bahwa Anda dapat mengambil alamat apa pun dan simpan dalam variabel berukuran sedang).
Jörg W Mittag
2
@ MartinSchröder: Atau, taktik lain: ada bahasa pemrograman di mana hanya mengkompilasi program dapat memaksa kompiler untuk memecahkan masalah yang sulit. Dalam C # Anda dapat menyandikan masalah 3-SAT sebagai masalah resolusi kelebihan beban dan membuat kompilator menyelesaikannya, dan di Haskell Anda benar-benar dapat menyandikan masalah yang setara dengan Masalah Henti ke dalam sistem tipe dan membuat kompilator menyelesaikannya. Anda tampaknya menganggap "bahasa pemrograman" sebagai bahasa imperatif tetapi ada banyak bahasa non-imperatif yang dapat mewakili perhitungan rumit.
Eric Lippert
5

Nah, Anda tidak dalam situasi yang unik. Sebagian besar buku-buku buku pemula dalam bahasa pemrograman cenderung lebih fokus pada blok bangunan dasar bahasa dan itu adalah hal yang baik. Namun seperti yang terjadi pada Anda, pada akhirnya kami menemukan diri kami dalam situasi di mana kami telah belajar setiap konstruksi bahasa yang ditawarkan tetapi tidak dapat menerapkannya untuk menyelesaikan beberapa masalah praktis. Singkatnya, kesenjangan antara contoh teks dan program praktis hanya dapat dijembatani ketika Anda mencoba bermain dengan kode (seperti Telastyn) katakan. Inilah yang biasanya saya lakukan saat mempelajari beberapa hal baru:

  1. Saat belajar dari buku, cobalah untuk menemukan beberapa skenario kehidupan nyata di mana beberapa contoh kode / teknik dalam buku dapat diterapkan.
  2. Cobalah untuk mencampur contoh program yang diberikan dalam buku ini untuk membuat sesuatu yang lebih besar dan rumit. Setelah itu coba minimalkan kodenya dan tulis kode lain yang memberikan hasil yang sama.
  3. Google untuk proyek-proyek praktis untuk bahasa yang dipertimbangkan.
  4. Setelah Anda yakin telah mempelajari elemen bahasa dasar, bereksperimenlah dengan kerangka kerja pilihan Anda. Untuk pertama kalinya, pilih sesuatu yang memiliki kurva belajar yang lebih mudah.
  5. Carilah beberapa proyek yang ada dan coba pelajari desainnya.
  6. Cari buku-buku lanjutan yang mengajarkan Anda lebih banyak hal-hal desain aplikasi canggih seperti pola aplikasi, desain dan implementasi OO dll

Pada akhirnya semua tentang praktik dan penelitian yang akan membantu Anda meningkatkan keterampilan pemrograman Anda dan pada akhirnya menjadikan Anda seorang arsitek dari banyak gedung pencakar langit.

mlakhara
sumber
2

Lihat ini untuk C #. Ini sangat lengkap: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Saya menggunakannya sendiri, hanya setengah tahun yang lalu. Saya menggunakan kompiler #Develop dengan itu untuk contoh. Saya tidak bisa banyak membantu Anda dengan Java karena saya jarang menggunakannya.

Ketika tiba saatnya untuk memprogram, yang tidak disadari banyak orang adalah bahwa Anda biasanya menggunakan SDK atau kerangka kerja tambahan untuk apa yang Anda rancang. Jadi jangan berharap untuk langsung beralih dari Java atau C # ke pemrograman ponsel, karena Anda mungkin membutuhkan kerangka kerja perantara yang baik, dan kurva belajar untuk mereka bisa sama melelahkannya dengan kurva belajar untuk bahasa pemrograman itu sendiri. Meskipun tutorial C # yang saya posting hanya mencakup C #, banyak konsep yang dibahasnya terlihat dalam bahasa berorientasi Objek lainnya, seperti Java.

Sunting: Skenario yang Anda gambarkan adalah, sayangnya, rute yang diikuti banyak tutorial. Anda tidak harus mengikuti tutorial seperti itu, dan jika itu bertentangan dengan cara Anda belajar, mungkin yang terbaik adalah mencoba dan mengambil yang berbeda (saya tidak tahu apa-apa, tetapi Google mungkin melakukannya). Tetapi hanya untuk memastikan, periksa untuk melihat apakah penulis buku yang Anda jelaskan menjelaskan kode per baris. Jangan khawatir tentang seberapa pintar Anda, hanya keajaiban yang bisa langsung berubah dari buku ke game yang berfungsi. Ingat saja, tutorial bukanlah pengukuran standar kemampuan, jadi lakukan apa pun yang mengajarkan yang terbaik kepada Anda dan jangan berkecil hati!

orang27
sumber
Jawaban yang bagus, dan saya ingin menambahkan bahwa Anda harus memutuskan proyek yang ingin Anda lakukan. Google cara untuk memecahkan masalah yang disajikan proyek. Anda akan belajar banyak dengan mencari cara yang lebih baik untuk menyelesaikan masalah yang Anda hadapi.
mortalapeman
1

Ya, itu harus banyak untuk membuat program super dasar. Pada titik ini Anda mencoba membuat program yang sedikit lebih rumit daripada apa yang telah Anda lakukan. Ketika Anda perlu melakukan sesuatu yang spesifik dan tidak tahu bagaimana bahkan dengan beberapa pekerjaan, maka Anda mencari di internet atau bertanya pada guru / mentor. Ini akan mengarah pada fitur yang lebih canggih (dan cukup sering menemui jalan buntu karena Anda secara tidak sadar memilih sesuatu yang jauh lebih kompleks daripada yang dapat Anda lakukan).

Tidak ada buku yang akan mengajarkan Anda bagaimana menyelesaikan masalah.

Tidak ada buku yang akan menjelaskan cara merancang program - yang dilengkapi dengan praktik. Tidak ada buku yang akan mengajarkan Anda cara membuat aplikasi non-sepele - terlalu banyak nuansa; Anda akan belajar bagaimana membangun yang pelaksanaannya tidak hal-hal seperti itu.

Cara terbaik untuk belajar pada titik ini adalah mencoba-coba. Untuk bermain-main dengan kode untuk membuat sesuatu. Sama seperti para seniman yang sering memulai mencorat-coret berita kecil yang semakin lama semakin canggih dan tampan, begitu juga programmer membutuhkan perkembangan eksplorasi itu.

Telastyn
sumber
1
"Tidak ada buku yang akan menjelaskan cara mendesain program" - Penulis Cara Mendesain Program mungkin tidak setuju :-)
Jörg W Mittag
1
@ JörgWMittag: Mereka akan memiliki beberapa teknik umum dan demonstrasi program-program tipikal, tetapi apa pun yang non-sepele akan membutuhkan tingkat besar penilaian manusia yang terpelajar, yang pada tahun 2013, masih tidak dapat dimekanisasi.
whatsisname
1

Saya benar-benar tidak ingat apakah saya menggunakan buku untuk masuk ke pemrograman, tapi saya kira pada masa itu lebih merupakan manual referensi sintaks daripada buku tutorial. Itu mengajari saya apa yang bisa dilakukan bahasa pemrograman, tetapi tidak bagaimana membangun aplikasi nyata dengannya.

Untungnya ada beberapa contoh dalam buku yang saya gunakan untuk mengetik (ya, tidak ada contoh kode sumber yang dapat diunduh) dan kemudian mencoba mencari tahu cara kerjanya. Itu bukan cara yang optimal untuk belajar pemrograman, tetapi bagi saya itu menyenangkan pada saat itu.

Apa yang saya sarankan adalah Anda menetapkan sendiri sasaran seperti " Saya ingin membangun aplikasi Javascript yang menarik lingkaran memantul " dan kemudian menggunakan pengetahuan yang sudah Anda peroleh untuk memulai dan mencari segala sesuatu yang lain dalam bahasa SDK / dokumentasi dan / atau di sini pada SO.

Itulah pendekatan yang saya gunakan ketika saya mencoba untuk melompat ke bahasa baru dan mempelajari langkah pertama saya. Sebagian besar buku yang saya baca dalam beberapa hari terakhir ini saya tidak puas karena saya merasa kehilangan sesuatu yang sama . Tapi untungnya kita memiliki internet sekarang, jadi bahasa apa pun yang ingin Anda pelajari, Anda dapat menemukan contoh kode sumber di internet dan menggunakannya untuk melanjutkan pembelajaran Anda.

sunting Tentu saja, beberapa buku yang lebih umum mengajarkan Anda cara mendesain aplikasi atau proses mana (SCRUM, XP, V-Modell) untuk diikuti adalah tambahan yang bagus untuk pengetahuan bahasa murni.

ngeri
sumber
1

Saya setuju dengan Jörg bahwa Anda juga harus membaca beberapa buku umum tentang konsep pemrograman daripada mempelajari terlalu banyak detail tentang bahasa tertentu pada tahap ini. Mengenai buku Cara Mendesain Program , ini digunakan sebagai referensi dalam kursus ini , yang mungkin menarik bagi Anda.

Kalau tidak, alat lain yang belum disebutkan orang lain adalah berbicara banyak dengan pengembang lain . Saya ingat bahwa bagi saya salah satu cara paling efektif untuk belajar program adalah menghabiskan waktu berjam-jam berdiskusi dengan kolega atau programmer lain tentang aspek pemrograman, bahasa pemrograman, teknik, atau masalah nyata yang saya hadapi pada saat itu. Transmisi pengetahuan oral masih bisa menjadi salah satu cara paling efektif untuk mempelajari keterampilan baru.

Giorgio
sumber
+1. Saya tahu orang-orang yang pergi ke konferensi tanpa pergi ke satu pembicaraan. Mereka hanya pergi ke sana untuk nongkrong di koridor dan mendiskusikan masalah dengan orang asing, hanya untuk mendapatkan sudut pandang yang berbeda.
Jörg W Mittag
0

Saya menyarankan mencari proyek open source dan mengubahnya menjadi kotak pasir pribadi. Ubah perilaku yang ada, tambahkan perilaku baru dan hapus beberapa perilaku juga. Bermain-main, terapkan ide Anda sendiri dan "bagaimana jika saya mencoba ini"

Saya tidak menganjurkan Anda mengonversi proyek sumber terbuka orang lain dan mengklaimnya milik Anda sendiri.

Saya mengatakan melihat proyek kerja lainnya sebagai sarana untuk mengajar diri sendiri bagaimana untuk sampai ke langkah selanjutnya. Ada banyak situs yang tersedia dengan kode sumber terbuka untuk diunduh. Inilah beberapa yang muncul di pikiran: CodePlex CodeProject

Matt Raffel
sumber
-5

Itu hidup coders. Anda tidak tahu teknologi, tetapi Anda mengembangkan 'hello world' dan Anda menjadi ahli. Dalam perusahaan (kehidupan nyata) begitulah cara kerjanya. Semoga berhasil

pengguna76655
sumber
2
Itu bukan jawaban yang sangat berguna.
svick