Lebih

Bagaimana cara melakukan loop pada sel raster dengan konsol python di QGIS?


Saya baru di sini dan pemula dengan python. Saya mencari solusi untuk masalah saya selama beberapa jam tetapi sekarang Anda adalah kesempatan terakhir saya… Saya menggunakan konsol python (2.7.5) di QGIS (2.4.0). Apakah ada solusi untuk melakukan loop pada sel raster? Saya ingin membuat raster di mana setiap sel nilai akan bergantung pada posisi (nomor kolom dan baris) di raster.

Saya mencari sesuatu seperti kode python ini di Arcgis (saya menemukannya di sini: Bagaimana cara mendapatkan koordinat XY dan nilai sel setiap piksel dalam raster menggunakan Python?)

untuk baris dalam rentang (0, tinggi): untuk col dalam rentang (0, lebar): #sekarang Anda memiliki akses ke array nilai tunggal untuk satu lokasi sel

Terima kasih!


Arcpy menggunakan format array Numpy (disembunyikan untuk pengguna) sebagai PyGGIS yang menggunakan modul Python GDAL.

provider = raster.dataProvider() # path file asli filePath = str(provider.dataSourceUri()) # buka file asli dari osgeo import gdal raster_or = gdal.Open(filePath) # buat array numpy numpy_array = raster_or.ReadAsArray( ) # bentuk array print numpy_array.shape (60, 100) # contoh saya # bandingkan dengan print raster.height(),raster.width() (60,100) width,height = numpy_array.shape # or width = raster .width dan height = raster.height() # dan untuk baris dalam range(0,width): untuk col dalam range(0,height): print row,col,numpy_array[row,col]

Membaca seluruh gambar sekaligus cukup efisien, tetapi bukan yang terbaik. Cara paling efisien untuk mengakses data raster adalah dengan blok (lihat kursus Chris Garrard Membaca Data Raster dengan GDAL)


Konfigurasi aplikasi eksternal¶

Kerangka kerja pemrosesan dapat diperluas menggunakan aplikasi tambahan. Algoritma yang mengandalkan aplikasi eksternal dikelola oleh penyedia algoritma mereka sendiri. Penyedia tambahan dapat ditemukan sebagai plugin terpisah, dan diinstal menggunakan QGIS Plugin Manager.

Bagian ini akan menunjukkan kepada Anda cara mengonfigurasi kerangka kerja Pemrosesan untuk menyertakan aplikasi tambahan ini, dan ini akan menjelaskan beberapa fitur khusus dari algoritme berdasarkan aplikasi tersebut. Setelah Anda mengonfigurasi sistem dengan benar, Anda akan dapat menjalankan algoritme eksternal dari komponen apa pun seperti kotak alat atau pemodel grafis, sama seperti yang Anda lakukan dengan algoritme lainnya.

Secara default, algoritme yang mengandalkan aplikasi eksternal yang tidak dikirimkan bersama QGIS tidak diaktifkan. Anda dapat mengaktifkannya di dialog Pengaturan pemrosesan jika diinstal di sistem Anda.


Python - Mengulangi sel raster, sangat lambat

Menjadi bukan pengguna python yang paling cerdas, saya telah mencoba mencari solusi untuk mempercepat kode saya. Saya memiliki 2 file raster, keduanya memiliki dimensi dan luas yang sama. Satu raster adalah sungai, diekstraksi dari gambar LIDAR, dengan rentang nilai elevasi yang sempit, semua nilai lain dalam file sungai adalah 0. Jadi pada dasarnya, dengan pengecualian lebar sungai (piksel dengan data elevasi), 99% dari raster sungai memiliki nilai 0. File raster lainnya diekstraksi dari gambar LIDAR dan memiliki data elevasi di seluruh jangkauannya.

Rencana saya adalah memeriksa setiap piksel dalam file sungai yang tidak memiliki nilai 0, tambahkan 1 ke dalamnya (jika ketinggian air sungai naik 1 meter) dan bandingkan dengan data elevasi piksel tetangga (pada dasarnya lokasi piksel ketinggian LIDAR). Jika lebih tinggi, beri nilai 1 (yang berarti piksel ini kebanjiran). Kode yang saya buat berfungsi, tetapi terlihat mengerikan, dan sangat lambat (cat mengering lebih cepat daripada kode berjalan..) Jadi saya mencari cara untuk mempercepatnya. Saya melihat vektorisasi, numpy, dll, tetapi belum dapat memahaminya (mungkin karena saya telah bekerja selama lebih dari 9 jam ..)


Bagaimana cara melakukan loop pada sel raster dengan konsol python di QGIS? - Sistem Informasi Geografis

Bayangkan kita bertugas mengembangkan fitur untuk menampilkan data publik yang berasal dari pihak ketiga yang tidak memiliki API. Katakanlah, kita perlu menunjukkan data terkini dan historis ketinggian air bendungan yang dapat kita akses di http://www.dwa.gov.za/Hydrology/Weekly/ProvinceWeek.aspx?region=WC. Kami tidak mungkin menambahkan entri secara manual--ini terlalu memakan waktu. Beberapa dari kita mungkin memilih cara yang sulit untuk meminta penyedia data membuat API publik, tetapi ada kendala waktu karena kita membutuhkannya sesegera mungkin. Salah satu cara untuk mengatasi ini adalah dengan menggunakan metode yang disebut "web scraping".

Pengikisan web, jaring panen, atau jaring ekstraksi data adalah data menggores digunakan untuk mengekstrak data dari situs web. Ada beberapa pustaka Python yang tersedia mulai dari Beautiful Soup (BS) yang sederhana, hingga Scrapy tingkat lanjut yang juga menyediakan coretan dan banyak lagi fitur lainnya. Dalam contoh ini, kita akan menggunakan BS4 karena kita hanya membutuhkan pengikisan web dasar.

Pertama, kita perlu menginstal Requests and Beautiful Soup. Kami membutuhkan Permintaan, karena Beautiful Soup hanya mendukung penguraian respons ke dalam HTML/XML, tanpa kemampuan untuk membuat permintaan ke server.

Mendapatkan Halaman Web dengan Permintaan

Pertama, kita akan menggunakan shell Python untuk memahami web scraping baris demi baris, lalu mengimpor perpustakaan Permintaan.

Kami akan menetapkan URI halaman ke variabel url, lalu dapatkan halaman itu menggunakan Permintaan.

halaman sekarang berisi sumber halaman url itu. Anda dapat memeriksa sumber dengan melihat sumber atau memeriksa elemen di browser. Dalam contoh ini, saya hanya akan menunjukkan kepada Anda bahwa kode statusnya OK (200) dan jumlah karakter di halaman sangat banyak sehingga kita tidak perlu mencetaknya.

Mengurai Sumber Halaman dengan Sup Cantik

Beautiful Soup (BeautifulSoup) membuat pohon parse dari dokumen HTML atau XML yang diurai. Menggunakan halaman web yang diambil sebelumnya, kita akan membuat objek Beautiful Soup yang biasanya disebut soup. Untuk halaman HTML, kita bisa menggunakan html.parser bawaan Python. Objek mewakili halaman HTML sebagai struktur data bersarang.

Menemukan Tag HTML

Kita dapat dengan mudah menemukan tag dari halaman menggunakan fungsi find_all dari Beautiful Soup. Ini akan mengembalikan semua elemen di dalam halaman.

Itu berarti tidak ada elemen dengan tag p di halaman itu. Anda dapat membandingkan hasilnya dengan sumber halaman jika mau. Seperti yang Anda lihat, tanda kurung siku [] menunjukkan bahwa ia memiliki tipe data daftar Python, sehingga kita dapat menggunakan pengindeksan untuk mengakses elemen. Mengakses teks di dalam tag dapat dilakukan dengan menggunakan get_text() .

Jika kita hanya ingin mendapatkan satu hasil, kita dapat menggunakan find yang akan mengembalikan None untuk hasil yang kosong. Jika ada lebih dari 1 elemen yang cocok, itu hanya akan mengembalikan yang pertama.

Mereka semua mengembalikan div pertama halaman.

Menemukan Tag berdasarkan Kelas dan Id

Akan ada saatnya kita ingin mencari tag tertentu. Selain hanya menggunakan tag, kita juga bisa mencari berdasarkan kelas dan id. Menemukan berdasarkan kelas diakomodasi oleh argumen kata kunci class_ .

Kami juga dapat menambahkan tag ke dalamnya, dan itu akan menjadi

Kita dapat melihat ada 2 elemen yang memiliki kelas auto-style1 , tetapi tidak ada yang memiliki tag div.

Mungkin ada beberapa tag dan kelas di seluruh halaman, tetapi hanya boleh ada 1 id di halaman. Menggunakan argumen kata kunci id, kita dapat menemukan elemen tertentu tanpa perlu menambahkan tag atau kelas.

Fitur Sup yang indah tidak berhenti di sini. Anda dapat membaca dokumentasi untuk melihat lebih banyak.

Mendapatkan Atribut Instance

Instance Beautiful Soup yang mewakili elemen HTML memiliki atribut yang sesuai dengan rekan HTML-nya. Tag a misalnya, memiliki setidaknya atribut href. Kita bisa mendapatkan atribut menggunakan fungsi get() .

Menggores Halaman Tertentu

Setelah mengetahui informasi mana yang ingin kita ekstrak, kita harus memahami struktur halaman. Misalnya, kami ingin mengekstrak Wilayah , Tanggal, Bendungan, Sungai, Foto, Indikator, FSC, Minggu ini, Minggu lalu, dan Tahun lalu. Mari kita periksa halaman web untuk lebih memahami strukturnya.

Elemen yang berisi Wilayah dan Tanggal adalah tabel pertama dengan id=ContentPlaceHolder1_twh . Kita dapat mengekstrak Wilayah dan Tanggal menggunakan skrip ini.

Sekarang bagian yang lebih rumit. Bendungan, Sungai, Foto, Indikator, FSC, Minggu ini, Minggu lalu, dan Tahun lalu terletak di dalam tabel. Idenya adalah untuk mengulang semua baris tabel itu, dan kemudian memproses datanya.

Id tabel adalah ContentPlaceHolder1_tw . Jika kita scroll ke bawah, kita dapat melihat tabel memiliki baris yang berisi nilai TOTAL, yang tidak ingin kita ekstrak. Lihat kode di bawah ini

Penjelasan 1

Kami tidak ingin mengekstrak baris terakhir. Jadi, kita perlu memastikan panjang header cocok dengan jumlah sel di baris. Ada cara lain untuk melakukannya, Anda dapat menemukannya sendiri dan memberi tahu kami di bagian komentar.

Penjelasan 2

Kami menggunakan get_text() untuk memasukkan teks ke dalam elemen, lalu menghapus spasi putih awal dan akhir dengan strip() .

Penjelasan 3

Foto dan Indikator masing-masing berisi tautan dan kami ingin mengekstrak nilai tautannya alih-alih teks jangkar. Kami mendapatkan a dari sel, dan mendapatkan nilai href menggunakan get() . Kami hanya melakukan pengikisan web sederhana di sini, jadi kami hanya mendapatkan URL Halaman Foto dan Indikator yang berisi gambar air bendungan dan grafik. Di dunia nyata, kami mungkin ingin mendapatkan URL gambar, bukan halaman. Anda dapat mengutak-atik kode untuk mendapatkan URL gambar Dam dan grafik Indikator.

Sekarang, kita perlu mengonversinya ke kelas yang tepat, sehingga kita dapat mengintegrasikannya ke aplikasi kita.

Ketika kami menjalankannya, itu akan mencetak data yang diekstraksi seperti yang saat ini kami definisikan process_data() untuk hanya mencetak data yang diekstraksi. Anda dapat memperbarui fungsi untuk memenuhi kebutuhan Anda, seperti menyimpan data ke model Django atau mengekspornya ke CSV.

Keren, bukan? Sekarang coba. Perbarui kode di atas untuk mengekstrak URL gambar Foto dan bagan Indikator, atau mulai proyek pengikisan web Anda sendiri. Harap ingat untuk berhati-hati saat menggores situs web karena pada dasarnya bertindak seperti bot dan ada kemungkinan kami membuat permintaan berulang. Jadi harap pastikan kami tidak membebani server.


10 Jawaban 10

Pada usia 4 tahun saya diberi komputer ZX Spectrum 48k dan sebuah buku yang diterbitkan oleh Usborne berjudul BASIC for Beginners.

Sejak saat itu saya ketagihan.

Tahun berikutnya saya diberikan Practice Your BASIC.

Pada usia 8 tahun, kami memiliki PC di rumah, dan saya mulai mencoba belajar C sendiri menggunakan buku The C Primer. Pointer benar-benar membingungkan saya saat itu, dan saya menyerah setelah beberapa saat dan tidak kembali ke C setidaknya selama sepuluh tahun. Saya geli sendiri menulis skrip batch DOS, dan sesekali mencoba-coba dengan bit kode mesin yang sangat pendek diperoleh dari majalah komputer.

Saudara saya, bagaimanapun, tidak tertarik sama sekali dalam pemrograman.

Saya akan merekomendasikan Anda memberi anak Anda alat (komputer dan bahan referensi) dan melihat apakah itu sesuatu yang mereka minati atau tidak.

Perhatikan bahwa saya tidak pernah didorong ke dalamnya, atau bahkan diawasi saat saya melakukannya - itu sepenuhnya didorong oleh diri sendiri, yang menurut saya membuatnya lebih menarik dan mengasyikkan bagi saya. Jika saya harus duduk dan ditampilkan maka itu akan terasa lebih seperti tugas, dan mungkin saya tidak akan menjadi programmer seperti sekarang ini?

(Buku pemrograman Usborne dari tahun 1980-an sekarang tersedia secara online gratis, dengan cara: https://usborne.com/books/computer-and-coding-books )

Ini sangat tergantung pada anak, seperti as semua pertanyaan semacam ini, tetapi 5-6 tentu saja bisa jadi.

Anak-anak saya, sekarang berusia delapan dan sembilan tahun, pertama kali mengenal pemrograman dengan cara yang berarti sekitar usia 4-5 tahun. Kami mulai dengan permainan sederhana yang "memprogram ringan", yang pada dasarnya melibatkan anak membuat "program" baik untuk mendapatkan bagian dari satu tempat ke tempat lain dengan instruksi, atau dalam satu kasus "pemrograman" orang tua untuk melakukan apa pun yang diinginkan anak. Itu mengajarkan konsep instruksi langkah demi langkah, logika boolean, dan bahkan fungsi (Anda dapat membuat "fungsi" dari beberapa instruksi, lalu memanggil fungsi itu alih-alih mengulangi baris). Mereka juga memiliki robot yang dapat diprogram (robot sebenarnya dengan aplikasi iPad yang memungkinkan mereka memberikan instruksi berulang dengan bahasa berbasis blok, termasuk gerbang logika dan loop dan fungsi). Itu sangat menyenangkan di usia itu.

Hal ini membuat kami menyadari bahwa mereka - dan khususnya yang lebih muda - tertarik pada pemrograman, jadi kami melanjutkannya. Sekitar enam, Scratch atau bahasa berbasis blok serupa sangat mudah diakses. Mereka menggunakannya untuk membangun program sederhana dan melihat program lain yang jauh lebih kompleks beraksi. Sebagian besar kami tidak mendorong apa pun di sini - mereka memiliki beberapa buku yang memandu mereka melalui langkah-langkah awal, tetapi sebagian besar ini adalah tentang belajar bersenang-senang dengan pemrograman dan melakukan hal konyol apa pun yang ingin mereka lakukan, bahkan jika itu benar. mengisi layar dengan kucing mengeong, atau membuat bola yang memantul tanpa batas.

Sekitar pukul tujuh, kedua anak itu mulai belajar Python. Yang tertua bosan dengan itu sampai batas tertentu, tetapi yang termuda benar-benar melakukannya dan memprogramnya sendiri untuk bersenang-senang, atau untuk memecahkan masalah (seperti mengacak pilihan untuk pelajaran musik). Meskipun mereka belum dapat memprogram sesuatu yang rumit, mereka memahami konsep dasar dan memiliki keinginan untuk belajar lebih banyak - yang pasti akan kami aktifkan sebanyak mungkin!

Mendorong, bagaimanapun, tidak benar-benar bekerja pada usia ini, dan saya tidak merekomendasikannya. Paparkan mereka pada pemrograman dan lihat apakah mereka menyukainya - ini sangat mungkin pada usia lima atau enam tahun, baik melalui permainan atau melalui pengalaman pemrograman awal dengan bahasa berbasis blok dan kemudian perhatikan kapan mereka siap untuk melanjutkan ke langkah berikutnya. Anak-anak saya adalah pembaca yang relatif awal, yang berarti saya dapat mengajari mereka Python pada usia tujuh tahun - tetapi saya menduga banyak anak perlu menunggu beberapa tahun lagi sebelum kefasihan mereka cukup. Goresan / dll. sangat bagus karena tidak memerlukan banyak bacaan - Anda dapat mempelajari apa itu balok dengan pengenalan bentuk.

Saya penggemar membangun pola pikir pemrograman tanpa perlu menggunakan komputer. Salah satu contoh yang baik adalah permainan sandwich selai kacang. Anda berpura-pura menjadi robot, sementara anak itu memberi Anda instruksi yang Anda jalankan dengan presisi literal yang susah payah.

  • Anak: Taruh selai kacang di atas roti.
  • Induk: [meletakkan toples selai kacang yang belum dibuka ke atas roti (masih di dalam tas)]
  • Anak: Oke, keluarkan roti dari tas.
  • Induk: [mengeluarkan roti dari tas]
  • Anak: Sekarang buka toplesnya.
  • Induk: [suara robot] DIBUTUHKAN INSTRUKSI LEBIH LANJUT
  • Anak: Putar tutup toples.
  • Induk: [memutar tutupnya, tetapi seluruh toples berputar]
  • Anak: Oke, pegang toples di satu tangan dan putar tutupnya dengan tangan lainnya.
  • Induk: [memutar tutupnya, tapi salah arah sehingga mengencang]
  • Anak: Tidak tidak. Putar tutupnya lain cara!

Ini membuat anak berpikir dalam pola pikir programmer tanpa harus terseret oleh sintaksis seluk beluk bahasa pemrograman tertentu. Dan Anda bisa mulai pada usia yang sangat muda, pada dasarnya segera setelah mereka cukup besar untuk mengetahui bagaimana melakukan tugas-tugas dasar seperti membuat sandwich dalam kasus ini. Dan mereka termotivasi karena ketika tugas selesai, mereka mendapatkan sandwich yang enak di akhir. (Ini juga sangat menyenangkan untuk bermain-main dengan anak-anak dengan cara ini.)

Semakin banyak orang tahu tentang komputer, semakin lama mereka tampaknya membiarkan anak-anak mereka berada di dekat mereka. Artikel Business Insider ini memiliki beberapa pengamatan dan kutipan:

Gates, misalnya, tidak membiarkan anak-anaknya menggunakan ponsel sampai mereka berusia 14 tahun. Jobs, penemu iPad, melarang anak-anaknya sendiri menggunakan teknologi tersebut.

Untuk melindungi anak-anak mereka, orang tua pekerja teknologi sering mengirim anak-anak mereka ke sekolah Montessori — sekolah elit yang kurang fokus pada teknologi dan lebih pada membangun kesejahteraan emosional, sosial, dan intelektual anak sekaligus.
Yang lain mengirim anak-anak mereka ke sekolah Waldorf, yang menganut filosofi anti-teknologi yang serupa. Di Los Altos, California, Waldorf of the Peninsula masih menggunakan pena dan kertas dan terkadang bahkan lumpur untuk membentuk pikiran anak muda.

"Di sini saya di MIT, dikelilingi oleh teknisi super, dan cerita yang sama di sini," kata [psikolog MIT] Turkle [. ]. "Semua orang di sekolah Montessori dan memiliki aturan tentang tidak ada komputer di meja makan, tidak ada komputer saat sarapan, tidak ada komputer di sini, tidak ada komputer di sana, tidak ada komputer di dalam kelas."

Tentu saja, pemrograman dapat dilihat sebagai cara untuk menjadi pengguna komputer yang kompeten, tetapi melihat disiplin diri saya di kantor di rumah sebagai seorang programmer, saya sangat ragu bahwa anak-anak prasekolah menangani godaan lebih baik daripada saya.

Pengalaman pribadi saya dengan putra saya adalah pembicaraan yang mendalam secara langsung (dan setiap pembicaraan bisa menjadi mendalam jika Anda tidak menghindar dan memberikan yang terbaik yang Anda punya untuk menjawab pertanyaan) adalah yang paling produktif untuk pikiran mudanya. Antusiasme dan emosi Anda ditambah dengan pengetahuan Andalah yang diperhitungkan. Waktu bersama sangat berarti. Teknologi agak tidak penting.

"Kode" tidak sama dengan "pemrograman". Misalnya, putri saya memainkan aplikasi bernama Coding Safari (https://www.hopster.tv/coding-safari/) ketika dia berusia sekitar 3-4 tahun. Aplikasi itu didasarkan pada instruksi menyeret dan menjatuhkan yang dapat diikuti oleh "robot". Dia melakukan hal serupa di taman kanak-kanak dan sekolah tahun-tahun awal pada usia yang sama dengan robot fisik - Bee Bots saya pikir mereka disebut.

Jadi dia sudah memiliki konsep dasar algoritma seperti mengikuti urutan instruksi, termasuk loop dan conditional. Tapi itu jauh sebelum dia merasa nyaman membaca dan menulis (dan mengetik) sejumlah besar teks dan simbol lainnya (misalnya tanda kurung).

Apakah ini memberitahu saya apakah dia suka atau tidak? Itu sulit ditentukan - anak kecil sangat fleksibel dalam preferensi mereka, dan kosmetik membuat dampak besar. Khususnya dengan pemrograman, hasil akhirnya bisa agak abstrak (terutama untuk apa yang dapat dicapai oleh seorang pemula atau individu) yang membuat lebih sulit bagi anak-anak untuk berpikir apakah itu sesuatu yang mereka sukai atau tidak. Kami akan terus mengeksplorasi konsep komputasi (misalnya saat ini kami sedang bermain https://shapez.io bersama-sama) meskipun dia tidak akan "coding" untuk sementara waktu. Tentu saja dia belum mengembangkan refleks "ketakutan" / "intimidasi" yang dimiliki banyak orang tua di sekitar teknologi, dan jika sejauh itu saya akan senang dengan itu!

Jawaban ini tidak ada hubungannya dengan pemrograman, tetapi.

Ketika putri saya mulai belajar masalah kata non-sepele dalam aritmatika (sekitar kelas dua (di AS)), saya mulai mendorongnya untuk melakukannya secara simbolis. Dia awalnya mendorong kembali. Tetapi, pada akhir tahun ajaran itu, dia memiliki pemahaman yang masuk akal tentang aljabar dasar (dan seorang guru yang bingung). Langkah untuk pemecahan masalah simbolis adalah langkah pertama yang kritis tidak hanya untuk matematika, tetapi untuk hal-hal seperti pemrograman.

Dari sana, saya mengambil kebijaksanaan dari jawaban pemrograman sandwich selai kacang @ DarrelHoffman, tetapi kuncinya sangat rendah - tidak sejelas jawabannya. Saya pikir kita bahkan mungkin memiliki permainan pesta ulang tahun sekolah dasar yang merupakan persilangan antara upaya sandwich selai kacangnya, pin-the-ekor-on-the-keledai dan Roomba (satu anak memakai lipatan buta sementara satu (atau lebih) tulis dan ucapkan "program" untuk membawa anak yang tertutup matanya melewati beberapa rintangan ke tempat yang dipilih).

Dia tidak pernah menyukai pemrograman. Mungkin mengikuti ibu dan ayah ke sekolah teknik sudah cukup, tetapi mengikuti ayah ke bisnis pengembangan perangkat lunak adalah jembatan yang terlalu jauh. Dia, tentu saja, mengambil kursus pemrograman, baik di sekolah menengah dan universitas (dan, saya kira dia membuat beberapa spreadsheet Excel yang berguna/rumit sebagai bagian dari pekerjaannya). Jika Anda tidak berpikir bahwa membuat spreadsheet yang rumit adalah pemrograman, cari "cellular automaton".

Apa pun yang Anda lakukan, jangan paksa anak Anda untuk melakukannya. Pengembangan perangkat lunak adalah sesuatu yang disukai beberapa orang, dan beberapa orang membenci. Tidak belajar "kode" pada usia 8 tidak akan mencegah mereka melakukan apa pun yang mereka inginkan ketika saatnya tiba bagi mereka untuk memutuskan apa yang ingin mereka lakukan.

Saya diajari pemrograman sejak usia 4 tahun, di pangkuan ibu saya. Saya belajar di GW-BASIC. Dia melakukannya untuk pekerjaannya, dan dia bekerja dari rumah, jadi awalnya sebagian besar mengharuskannya berpikir dan menulis dengan keras saat dia melakukan pekerjaannya.

Rupanya, butuh waktu sekitar empat bulan sampai saya mendapatkan momen "Tapi kenapa tidak -", setelah itu dia memberi saya panduan bahasa (sangat gemuk) dan memberi saya akses ke komputer lama untuk mulai melakukan sesuatu untuk diri saya sendiri. Dia sering membantu ketika saya bertanya, tetapi sebagian besar waktu saya menemukan sendiri dan mempelajari hal-hal yang ingin saya pelajari saat itu.

Awalnya, saya kebanyakan menulis game labirin kecil berbasis ASCII. Dan, tentu saja, saya membuat versi pong yang jelek.

Dan sekarang, hampir 30 tahun kemudian, saya masih kuat.

Ketika mereka menunjukkan minat yang jelas pada pemahaman yang lebih dalam tentang komputer.

Dan ya, itu dapat dengan mudah terjadi pada hampir semua usia. Untuk beberapa, mungkin diperlukan waktu 3 tahun. Untuk beberapa, mungkin diperlukan waktu 6 tahun. Bagi banyak orang, dibutuhkan 12 tahun. Untuk sebagian besar, itu tidak pernah terjadi. Dan kamu harus bisa menerima itu. Komputer benar-benar tidak terlalu menarik bagi siapa saja yang tidak tertarik dengan komputer.

Saya tidak mengerti ada apa dengan orang-orang saat ini yang berpikir bahwa pemrograman adalah keterampilan hidup yang penting yang harus diterapkan pada setiap anak. Bukan itu. Jangan pernah memproyeksikan gairah hidup Anda kepada anak-anak. Ini adalah resep untuk bencana. Jika mereka menjadi penasaran secara alami, maka tentu saja tidak ada yang salah dengan mendorong mereka, tetapi untuk mendorong seorang anak ke dalam apa pun yang mereka tidak tertarik pada diri mereka sendiri, hanya akan membuat mereka semakin putus asa.

Tidak seperti kebanyakan keterampilan artistik dan bahasa, pemrograman menjadi lebih mudah untuk dipelajari karena Anda memperoleh kemampuan lain yang relevan dan itu bukan sesuatu yang membutuhkan waktu 20 tahun untuk menguasainya, jadi tidak ada banyak motivasi di balik mengekspos anak-anak yang tidak tertarik pada bidang tersebut ke rasa sakit dan penderitaan pembuatan perangkat lunak, selain keinginan egois, tentu saja.

Memang, agak panas, tetapi saya telah melihat pertanyaan semacam ini terlalu sering dan itu selalu mengganggu saya betapa bersemangatnya orang tua untuk memutuskan karier anak-anak mereka. Ada keterampilan yang jauh lebih berguna secara universal daripada pemrograman.

Pertama dan yang paling penting saya harus setuju dengan beberapa posting di bawah ini bahwa kapan memulai tergantung pada anak. Saya telah melakukan beberapa penelitian tentang "Technische Frühförderung", yang agak kurang diterjemahkan sebagai dukungan atau intervensi awal dalam teknologi, dan memberikan ceramah tentang hal itu di taman kanak-kanak. Saya juga melakukan kelas Ilmu Komputer untuk anak usia 7, 8 tahun. (Tapi saya seorang programmer, bukan seorang guru) Saya pikir sejak awal Anda dapat dan perlu mendukung anak-anak dalam meningkatkan bakat teknis/pemrograman. Hal-hal seperti membiarkan anak-anak bereksperimen dengan berbagai hal, mempelajari sebab dan akibat, memberi mereka mainan untuk membangun hal-hal seperti balok dan peralatan. Bahkan sebelum berusia satu tahun, seorang anak yang bermain dengan wadah plastik kecil yang berbeda seperti cangkir dengan ukuran dan air yang berbeda dapat belajar banyak dan bersenang-senang. (Permainan Montesori dengan wadah dan air yang berbeda) Biasakan untuk membiarkan mereka memulai membuat keputusan sendiri (pada hal-hal yang sesuai usia, seperti taman bermain mana yang ingin Anda kunjungi, buah apa, mainan, pullover yang Anda inginkan, ..) Bagaimana seharusnya seorang anak yang selalu diberitahu apa yang harus dilakukan dapat menemukan solusi untuk masalah mereka sendiri di kemudian hari? Mengikuti prosedur penting untuk dipelajari, dan paling mudah dilakukan dengan mengikuti resep memasak yang mudah. Bekerja dengan orang lain itu penting, membagi tugas menjadi beberapa bagian juga – semua itu dapat dilakukan dengan menangani beberapa tugas rumah tangga atau membangun bersama dalam keluarga Anda. Jelaskan kepada anak-anak dari awal bahasa pemahaman mereka mengapa dan bagaimana segala sesuatunya bekerja, bahkan jika itu mengarah pada pertanyaan tanpa akhir yang berbatasan dengan 'menyiksa orang tua Anda'.

Tentu saja ada bakat. Meskipun di atas adalah taktik yang baik untuk semua anak, ada anak-anak dengan bakat lain, jangan mendorong mereka ke arah lain jika mereka tidak ingin pergi ke sana. Seperti yang dikatakan Knuth, "Anda memiliki bakat untuk pemrograman, atau tidak". Untuk menyelesaikannya, pengkodean yang sebenarnya dengan bahasa pemrograman dapat diambil berdasarkan usia di mana anak Anda dapat membaca dan menulis dalam bentuk dasar. Beberapa dapat melakukannya dengan 5, beberapa nanti. Tetapi pengkodean hal-hal dengan dukungan visual dapat dimulai jauh lebih awal dengan anak-anak yang memiliki bakat teknis, tentunya berusia 3 hingga 4 tahun. Anda dapat menawarkan mereka pemrograman dengan menunjukkan kepada mereka cara menggunakan alat pemrograman yang sesuai, mengajari mereka struktur pengkodean seperti pengulangan, kondisi, objek. Ada alat untuk itu dengan "karakter" terkait seperti lebah, kura-kura, robot. Tetapi biarkan mereka memilih sendiri kapan harus mulai menggunakannya. Anda dapat menawarkan mereka pergi ke kelas pemrograman yang menyenangkan dengan anak-anak lain, jika mereka menyukainya. Bagaimanapun, sangat menyenangkan melihat mereka mengembangkan bakat itu, bukan! PS: Anda dapat melihat karya Linda Liukas untuk beberapa ide untuk memulai pengkodean misalnya.

Software "Code" , atau "programming" harus dilihat, sejauh perkembangan intelektual dan konseptual berjalan, tidak berbeda dengan "code" yaitu alfabet, atau bahkan buku bergambar yang menceritakan sebuah kisah melalui perilaku objek dalam gambar berurutan.

Semua hal ini menunjukkan kemampuan otak untuk mengubah simbol menjadi konsep dan tindakan. Cerita buku bergambar pada dasarnya sama dengan bahasa pemrograman berbasis ikon seperti Simulink atau LabView.

Mengingat semua itu, rekomendasi pribadi saya adalah memberi anak-anak perangkat lunak pemrograman yang kompatibel dengan anak dan membiarkan mereka memutuskan apakah menyenangkan untuk belajar membuat sesuatu di layar.


Tonton videonya: QGIS Python PyQGIS - Raster Calculator in a Python Script (September 2021).