Gelecek hafta 15 yaşında bir iş tecrübesi öğrencisi olan bir Geliştiricinin hayatı ve çalışması hakkında oturup konuşmaya gönüllü oldum.
Yakalananlar
Neleri kapsamalıyım ve ona sadece yarım saat içinde ne öğretmeyi umabilirim?
Muhtemelen geliştirme veya programlama konusunda hiçbir tecrübesi olmadığını düşünüyorum.
Lise öğrencileriyle çok etkileşime giriyorum, bu yüzden bu soruya çok sık cevap veriyorum. 15 yaşındakilerin programlamayı 50 yaşındakilere göre anlatmanın çok daha kolay olduğunu unutmayın - bu yüzden aptalca şeyleri silmenize veya çok fazla benzetilmiş analojiler kullanmanıza gerek yoktur.
Genellikle hangi programların örnekleri ile başlıyorum:
Bundan sonra, genellikle programları tanıyabileceğimiz resmi bir dilde kodladığımızı ve genellikle Not Defteri gibi basit bir şeyde yazdığımızı açıklamaya devam ediyorum. Diller, kavramları tanımlayan ve bilgisayarın takip etmesi için formüller ve talimatlar veren matematik ve İngilizce arasında bir çarpı işareti gibi görünür.
Sonra genellikle bilgisayarda sürekli çalışıp çalışmadığımı sorarlar, eğer bu yüzden hep Facebook'tayım ve gözlerim neden henüz kötüleşmedi. Çocuklar "insanları hacklemeyi" biliyor muyum diye soruyor ve kızlar bunun iyi para mı yoksa bilgisayar bilimi derslerinde kaç kız olduğunu soruyorlar.
Bundan sonra, hala ilgileniyorlarsa, genellikle cevaplaması çok daha kolay (veya en azından Wiki'ye) özel sorular sormaya başlarlar: nasıl oyun yapacağınız, Windows Messenger'ın nasıl çalıştığı vb.
Etrafınızda bir bilgisayarınız varsa, bazı kodları gösterebilir ve söyleyebilirsiniz - Firefox'taki ayarlar iletişim kutusundan bir düğme tıklama işleyicisi, bir oyun motorundaki ana döngü veya fizik kodu gibi somut etkileri olabilecek bir şey, bazıları Bir web sitesinden JavaScript kaynağı vb.
Beş yaşındaki çocuğuma şunları açıkladım:
Ben: "Hikayelerde insanların sihirli kelimeler söylediğini ve dünyadaki şeyleri nasıl değiştirdiğini biliyor musun?"
O: "Evet?"
Ben: "Bilgisayar programlama budur."
O (sessizce): "Vay canına."
15-30 dakika gerçek bir şeyi açıklamak için yeterli değildir ve temeldeki karmaşıklığı açıklamak onların çığlık atmasını sağlamak için kesin bir yoldur. Her gün içinde çalışıyorsun, ne kadar havalı olduğunu unutuyorsun. Dünyadaki başka hiçbir meslek, kelimelerden başka hiçbir şeyden işlevsel şeyler yaratmaz ... Bir noktada, herkes et dünyasına girmeli ve bir çekiçle şeyleri dövmeye başlamalıdır. Fikirlerini çalışan bir şeye dönüştürmenin tek yolu budur.
Biz değil.
15 yaşında bir kişi herhangi bir kavramı anlayabilir. Kendim 14 yaşında programlamaya başladım (okulda, yıllar önce)
Bir demo için 30 dakika yeterlidir. Ona tarayıcı kadar yaygın bir şeyle programlama sihrini gösterin.
Neredeyse 15 yaşında bir çocuk olarak, muhteşem bir başlangıç yapmanız gerektiğini güvenle söyleyebilirim.
Nasıl başardığınızı açıklayın.
10101010tüm gün. Onlara bunu nasıl yapacağınızı bilmediğinizi söyleyin . (Yalan. Siz ne yapıyorsunuz
10101010demek, değil mi? ;)) Onlara yıllar önce olduğunu söyleyin.
Onlara bazı sahte kodların bir örneğini gösterin. Anlamanızı kolaylaştırın:
Display Window Display "I like cheese!" Display OK button If user clicks OK button, close Window
Adım adım ilerleyin. Onlara bunun kodun nasıl göründüğünü söylemeyin. Kod
English + Math. Ancak konuştuğunuz "dili" (okuma: sözdizimi) öğrenmek zor değildir.
Bu sefer onlara biraz daha "matematik" içeren bir örnek gösterin.
User inputs A User inputs B C = A + B Display C
Kodun bir hesap makinesi gibi iki sayı eklediğini açıklayın. Bunun için "gerçek" kodu gösterin. (Kullanıcı arayüzünün büyük bölümünü ve diğer öğeleri ayrı bir dosyaya koyduğunuzdan ve bunları gösterdiğiniz dosyayı kısa ve basit tuttuğunuzdan emin olun.) Bir çıkarma programına değiştirin (işareti
+ ila
-) gözlerinin hemen önünde.
Programlama yapmak için neleri bilmeleri gerektiğini açıklayın. (Çeşitli seviyelerde.)
x + 1 = 2, sonra
x = 1.
Düşündüğünüzden daha fazlasını biliyoruz.
Evet, hala açıklamamız gereken bazı şeyler var.
10101010.
Bazılarımız bu şeyleri biliyor, ama lütfen yine de söyleme.
Süreç, örüntüler, gereksinimler ve benzeri şeyler hakkında konuşmaya başlarsanız, derhal kapanacaktır. Bugün çocuklar grafik ve görsel olarak motive, bu yüzden bu tür uyaranları teşvik etmeye yardımcı olacak bir şey getirirdim. Ona web'de şık bir şey gösterin ve daha sonra yüksek düzeyde onu OLUŞTURUNU tarif edin. Hatta geliştirme dizüstü bilgisayarınızı almanızı ve ekranda "serin" bir şey olmasını öneriyorum - önündeki kodu değiştirin ve ekranda değiştiğini izleyin. Bu yaşta, ÇOK akıllılar ve görsel olan her şey spark ilgi).
Programcıların çalışmalarını açıklarken güvendiğim iki büyük analoji var. Biri bir reçetedir; bu metafor, her bir kod satırının ne yaptığını küçük ölçekte açıklamak için yararlıdır. Bir programcının çalışması tarifi yazıyor ve bilgisayar aşçı.
Diğer benzetme, büyük bir programın büyük bir şirket gibi olmasıdır. Farklı alanlara odaklanan ve ileri geri mesajlar gönderen bir sürü farklı departman var ve hepsi şirketin amaçlarını gerçekleştiriyor. Bir programcının çalışması, kuruluşun nasıl kurulduğunu tasarlar ve bilgisayar şirketteki tüm kişilerdir.
Ben genel olsun diyorum. Programlama ve diğer birçok meslek, problem çözmeye kaynar. Ona sorunları günlük olarak nasıl çözdüğünü göster. Ona üzerinde çalıştığınız bir projeden ve müşterilerinize nasıl yardımcı olacağından bahsedebilirsiniz. Ayrıca işinizi neden sevdiğinizi (muhtemelen) biraz ekleyin.
Benim durumumda, diğer personelin öğreticiler yayınladığı bir eğitim videosu öğretici web sitesi geliştirdim. Projenin motivasyonunu (insanları birbirine bağlamak zorunda kalmadan uzaktan öğretmek), karşılaştığım sorunları (bunları zor problemler olarak görmek zorunda değilim) ve bunları nasıl çözdüğümü açıklayacağım. Ayrıca ilk etapta programlamayı neden sevdiğimden de bahsedeceğim: Bir şeyler yaratmak ve programlamanın modern dünyaya katkısını seviyorum.
Ona üzerinde çalıştığınız yazılım örneklerini verin. Yazılımınızı herkese açık olarak kullanan bir müşteriniz var mı? Ona gösterebileceğiniz bir kurum içi uygulama geliştiriyor musunuz? Ona çalışmanızın sonucunu, son kullanıcının gördüklerini ve kullandıklarını gösterin.
Ardından, yazmanıza yardımcı olduğunuzu açıklayın. Yazdığınız bölümleri gözden geçirin. Mümkünse bazı kodları göster. Bu kod satırlarının uygulamanın bir kısmını nasıl çalıştıracağını özetleyin.
Kodunuzun insanlar tarafından kullanıldığını görmekten ne kadar keyif aldığınızı konuşun.
Yine de 14 yaşındaki kuzenime böyle anlattım. Çok etkilendi ve gelecek dönem bir programlama dersi almaya karar verdi.
Masa oyunu Robo Rally'i tanıyor musunuz?
Programlamanın mükemmel eğlence benzetmesi olduğunu gördüm. Temelde oyun tahtası üzerinde belirli bir noktaya ulaşmak için basit komutlar (çoğunlukla oklar) kullanarak robotunuzu programlıyorsunuz.
Keşke hala BigTrak'ım olsaydı ...
Basit ama kullanışlı bir şey gösterin. Bence iyi bir örnek şöyle olurdu:
Bu yaklaşımı sevmemin nedenleri:
Daha iyi örnekler düşünebilirsiniz, ancak stilin "ilk giriş" için yararlı olduğunu düşünüyorum.
Çoğu 15 yaşındaki "bugün" bilgisayar konusunda çok deneyime sahip. Yaklaţýklýk üzerine daha fazla el yapacađým. Ona biraz kod gösterirdim (ayrıntılı olarak açıklamaya çalışmayın, ama belki de "akış" ın aşırı temellerini örtün) ve sonucun ne olduğunu gösterin. HTML bile bu tür bir örnek için çalışacaktır. Sonra "Her gün, bunu temel olarak yapıyorum .. on binlerce satır kod ve çok büyük ve karmaşık bir program dışında" deyin.
Ardından programlayarak ne tür sorunları çözdüğünüzü ve bunu neden yapmaktan hoşlandığınızı açıklayın. Örneğin, programlamayı sevdiğimi söyleyebilirim çünkü "Kodumun bilgisayarda bir uygulama olarak hayat bulmasını seviyorum"
İlk olarak, tartışmayı yapmanız gereken bir rekabetiniz var.
Filmler, popüler kültür ve hatta alandaki insanlar ( ve bu konu için bu soru) programlamayı (ve bilgisayar bilimi alanının büyük kısmını) bir tür sihir olarak tasvir etmeye çalışır. Bu sihir değil.
Programlama sadece görevleri tanımlamak ve daha sonra bir sorunu çözmek için bu görevleri birleştirmektir. Paralel bulmaya çalışıyorsanız, matematik kullanın. Bir bilgisayar, tüm çalışmalarınızı göstermenizi gerektirir yapmanızı gerektiren bir matematik öğretmeni gibidir.
Fiziksel bir bakış açısından, bilgisayarlar akıllı değildir; sadece biliyorum onlara söylediğimiz kadarıyla. Dolayısıyla, bir bilgisayar programcısı, örneğin bir CD'den müzik çalan bir program oluşturmak istediğinde, bilgisayara `` basitçe '' CD'de depolanan verileri nasıl okuyacağını, sonra bu verileri ses dalgalarına nasıl dönüştüreceğini ve son olarak , bu ses dalgalarını hoparlörlerinizden nasıl çıkarabilirsiniz.
Bu fikri bir sonraki seviyeye taşıyarak, programlamanın görevleri birbiri üzerine nasıl geliştirdiğini öğrenebilirsiniz. Tıpkı matematikte cebir öğrenmeden önce aritmetiği öğrenmesi gerektiği gibi, bilgisayarlara da daha karmaşık görevlerin nasıl yapılacağını söyleyebilmeniz için 'temelleri nasıl yapacağını' söylemesi gerekir. Yıllar geçtikçe, bilgisayar bilimcileri ve programcıları, birbirleriyle nasıl konuştuğumuza çok daha yakın bir şekilde onlarla 'konuşmaya' başlayabileceğimiz noktaya kadar bilgisayarlara 'temel' öğretebildiler.
Gerçek hayatta, matematik öğretmeniniz size "15'i 3'ün gücüne" çözmenizi söyleyebilir, ancak bunu nasıl yapacağınızı biliyorsunuz çünkü daha önce "Y'nin gücüne X" in "Çarpın [~ # ~] x [~ # ~] by [~ # ~] x [~ # ~] ve yapın [~ # ~] y [~ # ~] kez "[teknik olarak [~ # ~] y [~ # ~] - 1 kez, ama ha.]
Matematik dersleriniz gibi, programcılar da küçük şeylerin detaylarına odaklanmamıza gerek kalmadan 'bilinen' görevlerin bir temelini oluşturdular ve zamanımızı gerçek problemleri çözmeye değil, çok fazla değil nasıl temel görevleri gerçekleştirmek için - artık bir bilgisayarın temel şeyleri nasıl yapacağını anladığını varsayabiliriz.
9 yaşındayken beni çengel eden şeyi yaparım. C64'ü çatı katından tut ve yap:
10 PRINT "YOU SMELL"
20 GOTO 10
(Sağol baba).
Sonra eğlence bittiğinde. Ona sayı tahmin oyununu gösterirdim. Evet, hepsi BASIC. Modern bir dilin, talimatları izleyen bir bilgisayara göstermesi için ölmeye gerek yoktur.
Facebook gibi rutin olarak yaptığı bir şeyle başlamak ve giriş yapmak gibi basit bir yönün çok karmaşık olabileceğini ona açıklamak yararlı olabilir.
Buradan veritabanlarına, uygulama tasarımına ve sonra güvenliğin bazı yönlerine dalmış olabilirsiniz, ki bu da onu alabileceği yararlı bir şeydir.
Ona, "Facebook hakkında değiştirebileceğiniz bir şey olsaydı, ne olurdu?" Ardından, değişikliği nasıl yapabileceğinizi ve kaç kişinin dahil olacağını araştırın.
İlk olarak Pascal'ı programlamayı öğrendim ve programımın girdimi kabul etmesi, onunla uğraşması ve farklı bir şey basması beni çok heyecanlandırdı. Oradan bağlandım. Bazı insanlar kolay kilitlenir.
İşte birkaç başarısız ve birkaç iyi denemeden sonra benim almam:
Programlama problem çözmektir.
İnternet tarayıcı (facebook), cep telefonu, yazarkasa, vb. Her gün kullanacakları programlanmış somut şeylerle başlayın. Tüm bunların içinde bir çeşit bilgisayar olduğunu tespit edin. Bilgisayarın kalbi işlemcidir.
İşlemci çok hızlı, ama çok aptal bir işçi gibidir. Bazı talimatlar verirseniz, bunları tam olarak söylediğiniz gibi yapar. Ekstra bir şey yapmaz ve size söylediğiniz bir şeyin yanlış olup olmadığını söylemez. Bu işlemci her şeyi yapar - tam olarak nasıl yapılacağını söylerseniz, telefon görüşmesi yapabilir veya e-postaya resim ekleyebilir.
Ona çok hızlı ama çok aptal bir işçiye bir soda makinesinden bir kutu soda almasını nasıl söyleyeceğini sor. Adımları açıklamaya başladığında ("Makineye para koyun ve düğmeye basın.") Programı bir program gibi ayırmaya başlayın ("Para nedir? Makineye nasıl koyabilirim? Makineye para koyduğumda ve düğmesi aynı anda hiçbir şey olmuyor. "). Bir beyaz tahtanız varsa, ilk talimatlar kümesiyle soldan başlayın. Onları gözden geçirirken, yeni daha büyük listeyi sağ tarafa yerleştirin. İyi bir talimat setiniz olduğunda, parçaları genelleştirmeye başlayın ("Parayı cebinizden çıkarın ve sodayı tepsi sesinden çıkarın - hangi parçalar aynı/farklı?") Genelleştirmeleri alın ve ortaya koyun ve şimdi kuşattıkları parçaları çaprazlayın. Sonunda parçaları orijinal talimatları, benzer işlev çağrıları ile eşleşecek şekilde bağlamaya çalışın. Diğer iyi egzersizler: bir mektup postalayın, bir kapıdan geçin, bir daire/kare/üçgen çizin.
Programlama problem çözmektir: problemleri parçalara ayırmak, yaygın olan parçaları tanımlamak ve problemleri çözmek için bu parçaları tekrar gruplandırmak. Yakında, bazı parçaların birçok problemde ortak olduğunu görüyorsunuz ve sonra sahip olduğunuzu bile bilmediğiniz sorunları çözmek için parçaları bir araya getirmeye başlıyorsunuz.
Tamam, bu noktada anlayabilir ama muhtemelen sıkılmış. Bir dizi harika programlama örneği ile takip edin. Gölgelendiriciler ve ilgili görsel kodun demosu kolaydır - bir resim koyabilir ve çok küçük kod değişiklikleriyle değişiklik yapmaya başlayabilirsiniz. Facebook'a ilgi duyduğunu ifade ederse, arkadaşlarının (6 derecelik) arkadaşlarının arkadaşlarını görmek için REST) aracılığıyla Facebook ile konuşmayı göster. Video oyunlarını seviyorsa, birkaç açık kaynaklı oyun göster birkaç kod parçacığının yanı sıra oyunun çalışmasına nasıl yardımcı olduklarını gösterebilir. Evde araştırabileceği birkaç ücretsiz araç ve kaynak göstererek bitirin. (Python, C #, vb.)
Başarısız girişimlerim: pi hesaplamasını açıklamaya çalışmak (soruyorlardı), C-Jump masa oyunu http://c-jump.com/ (anlamadılar ve talimatlar hatalıydı ) ve canlı bir 2d oyun kodlama (demolar arasında ne kadar küçük adımlar atarsam alayım o kadar da ilgi çekemedi).
İyi şanslar!
Basit bir program yapın. Hayır, "Merhaba Dünya!"
Yapacaklarım arasında birçok tür programlama dili var - oyun yapan, robotları kontrol eden - ama birlikte çalışacağınız HTML.
Üzerinde hiçbir şey olmayan bir web sayfası oluşturun ve e-posta adresine e-posta gönderecek bir form ekleyin. Muhtemelen sahibine yeni bir e-postaları olduğunu bildirebilen bir cep telefonu var, bu yüzden arkadaşlarının ve ailesinin onunla iletişime geçmesinin harika bir yolu olduğunu söyleyebilirsin. Gelecekte kendi web sitesini alırsa, formunu web sitesine koyabildiğini söyleyebilir, müşterilerinin ve iş ortaklarının onunla iletişime geçmesine izin verebilirsiniz.
Alternatif olarak, eğer biraz yaramazsa, size programlamaya neyin ilgi duyduğunu söyleyeceğim: hackleme. O günlerde, 14-15 yaşlarında, AOL'de uğraşmak için şimdiye kadar yapılmış en iyi programı yaptım (benim yaptığım düzinelerce şeyden sadece birinden daha iyi performans gösteren bir program dışında). Beyaz şapka tarafında, ilk spam kaldırma programlarından birini de yaptım (1995.) Çevrimiçi deneyimimi çok daha eğlenceli hale getirebildim ve bunu bırakacağız. Bir bilgisayarda yapmak istediğim her şey, çözmem gereken bir macera ya da bilmeceydi ve bilgisayarda yapmak istediğim şeyler sonsuzdu. Elbette, işe başlamak zaman zaman baş ağrısıydı, ancak işleri herhangi bir insanın yapabileceğinden daha iyi ve daha hızlı gerçekleştiren bir program yazmak veya genel halk için imkansız olan şeyleri yapmak, kişinin yapabileceği ince bir makine parçası yapmak gibiydi. gurur duymak. Şimdi, muhtemelen ciddi bir şey uzak utangaç, ama başlangıç (ekranın veya sistem tepsisinin yanında oturan) ve oradan başlatılabilir Visual Basic'te bir şey yapmak son derece kolay olurdu, en sevdiği web sitelerini, en sevdiği programları vb. başlatmasını sağlayabilirsin. , en sevdiği web sitelerini (facebook, Twitter vb.) ve programları (iTunes, Word işlemci, vb.) koyarak Bilgisayarı onun odasındaysa, ek işlevsellik için bir çalar saat de atabilirsiniz. Tabii ki, 30 dakika onu yürümek için çok kısa, bu yüzden zaten yapmalısınız. Sonunda, 2-3 sayfalık bir kullanım kılavuzu, kod ve .exe e-postasına e-posta gönderirsiniz ... ve sonra onu küçük bir satış konuşmasıyla bırakırsınız: ilk başta kolay değil, ancak bir kez asmak, o kadar kötü değil, hayatta son derece yararlı olacak ve analitik düşüncesini geliştirmeye yardımcı olacak.
Eskiden 18 yaşında üniversite öğrencilerine öğretiyordum ve sanırım 15 yaşındakiler de neredeyse aynı. Pratik yapmadan başarı beklemeyin. Birinci sınıfımda "kırılmak" birkaç haftamı aldı.
Öğrenmek zorunda olduğum en büyük şey, o kadar basit ve açık olduğunu düşündüğüm şeyin, zamanı dolduramama korktuğumun, öğrenciler için hiç de öyle olmadığıydı. Bebek adımlarına gitmen gerektiğini öğrendim - aksi takdirde sadece "gee whiz" büyüsü.
Bunu 30 dakikada nasıl sığdırdığından emin değilim, ama yaptığım ilk şey, inşa ettiğim küçük bir ev yapımı bilgisayarı göstermekti, bu da bir hoparlörü içeri ve dışarı tıklatarak küçük bir melodi çalmaya programlandı. Tıklamalar arasında bir sayacı azaltarak, gecikme olarak hareket etmenin bir not oynayabileceğini açıkladım. Tıpkı bir reçete gibi sahte kodu tahtaya yazdım. Sonra, her şeyin yaklaşık 1000 kat daha yavaş çalışmasını sağlayacak bir telin altına asabileceğim küçük bir kapasitör vardı. Sonra tıklama - bekle - tıklama - bekle ... duyabiliyorlardı. Sonra kapasitörü açtığımda, küçük melodiyle patladı.
Bunun amacı, bilgisayarların sadece basit şeyler yapmak ve onları birer birer yapmak olduğunu anlamaktı. Önceki adım bitene kadar her adıma başlamazlar. (Evet, evet, biliyorum - pipelining ve her şey, ama konuşuyoruz yeni başlayanlar.) Sadece elektronik hız, her şeyi aynı anda yapıyor gibi görünüyor, yeni başlayanların varsaydığı şey bu (zihin okuma ile birlikte). Bu, programlama ve bilgisayarları anlamaya başlayamayacağınız gerçekten temel kavramlardan biridir. Bizim için, bu çok ayrıntılı, bildiğimizi bile bilmiyoruz, ancak yeni başlayanlar bilmiyor.
Umarım, alana ilgi duyması gereken yazılım geliştiren bir yerde bir işe yerleştirmeyi tercih eder miydiniz?
Belirlenmiş bir cevap yok, onu bildiği şeyle ilgili 5-10 dakika boyunca test ederdim, sonra bunu en iyi şekilde yapmaya çalışın.
Yüksek seviyeye başlayın. Belki de bilgisayar programlamanın problem çözme ile ilgili olduğunu açıklayın: bir problemi almak ve bir makinenin kullanabileceği ve anlayabileceği bir dizi talimat olarak yazılmış bir çözüm tasarlamak.
Zor kısım, 15 yaşındaki bir kızın ilginç ve alakalı bulacağı örnekler ortaya koyuyor olabilir. Bu durumda hiç bulunmadım ve onu bilmiyorum, bunun için ne önereceğimi bilmiyorum ... Sonuna kadar kod örneklerinden kaçının ve "Merhaba dünya" programı gibi çok basit veya ilginç durumlar dışında veya basit ve grafik bir şey (bir pencerede bazı şekiller çizin, bir fare izleyin, vb ...).
Eğer ben olsaydım, ona programlamanın bir görevi onları çözmenize yardımcı olacak şekilde küçük görevlere bölmek olduğunu söylerdim; ve sonra bu küçük görevleri bir salak bilgisayar tarafından yanlış anlaşılamayan bir dilde ifade etmek. Ancak bunu diğer programcıların da kolayca anlayabileceği bir şekilde yapmalısınız - ve bu aynı şey değil.
Yani, herkesin söylediklerinin üstünde ...
Bu benim kişisel deneyimlerimin basit bir “cevabından” çok.
Neden ilgimi çektim? Ailem bir IBM PC XT 1984'te satın aldım (1984 doğumluyum). 640kb RAM ve 20MB HDD ve 5 "FDD var ve MS-DOS v3.2 koştu. 5. standart olana kadar ve nihayet izin verildiğinde dokunmama izin verilmedi Bunu kullanmak için, birikmiş tüm merakımı yıllara döktüm.
Öte yandan ablam aynı PC ve bir Quadra 610 mackintosh o istediğinde izin verildi ve o o masaya ödenen o kadar heed ödedi.
Kız kardeşime öğretmek ... Kız kardeşime bilgisayar programlamayı BASIC dilinde öğretmeye çalıştım. Bilgisayarı başlatmaktan programa yazmaya ve yürütmeye kadar her şeyi ona yaptım. Bu bir çizgi programıydı.
10 PRINT "CAT" 20 END
Bu yarım saat sürdü. Sonunda idam ettiğinde, 'CAT' sözcüğünü bastı ve öfkeliydi. Bir kedinin resminin görünmesini bekliyordu. Odadan fırladı ve bu sonsuza dek programlamanın sonu oldu!
Ahlaki: Çıktı, koydukları zaman ve çabalarla orantılı olsa iyi olur.
Lise çocuklarına öğretmek Labview ve Lego NXT Bir yıl boyunca İLK Robotik için bir akıl hocasıydım ve çocuklara rehberlik etmek zorunda kaldım NI Labview'de robotu programlamada. Açıkçası, gerekli programlama becerisi bir lise çocuğunun seviyesinin çok üzerindeydi. Ancak yarışma, çocukları mühendislik konusunda heyecanlandırmak ve bir meydan okuma yapma yeteneği konusunda çıtayı yükseltmek için tasarlandı. Programlar sadece bir if ifadesine ve bir döngüye sahip olduğu sürece işler iyiydi. İnsanlar önceki yıl inşa ettiğimiz robot için oluşturduğum kod şemasını gördüklerinde robotun programlama bölümünden ayrıldılar.
İnsanlar 15 yaşındakilerin karmaşık şeyler yapabileceğini ve saatlerce dikkat çekebileceğini belirledikçe, bunu yapmak için garip bir motivasyon eksikliği buldum. Beyinlerini vergilendirmeyen kolay şeyler yapmak istediler. Onlar CAD ve torna makinesinde değirmen parçalarını program yazmaktan çok tercih ettiler.
Demolara girmeden önce, CS'nin dünyadaki yerini kısaca almanıza yardımcı olur. Hal Abelson'un CS'yi matematiğe göre tanımlamasını sevdim: matematik dünyayı yasalar olarak tanımlamanıza yardımcı olurken, CS bir şeyleri nasıl yapacağınızı açıklamanıza yardımcı olur. Onun örneği karekök işleviydi: matematik bunu tanımlayacak, ancak herhangi bir giriş için bulmanıza yardımcı olmayacak. CS yapacak. Daha düşük bir düzeyde, elektrik mühendisliği ve fizik, İnternet'i etkinleştiren donanımın temelini attı, ancak insanların onu nasıl kullanacağı ile ilgili soruları açık bıraktı.
Bir programcı olmanın nasıl bir sorusu var. Beni çeken şey, başka bir teknik alandan daha hızlı bir deneme, test etme, düzeltme işlemine sahip olmasıydı. Kesintisiz problem çözme olurken, diğer alanlarda tek bir döngü için geri dönüş süresi ay olabilir. Diğer teknik alanların çoğu için söylenenden daha fazla olan neredeyse tüm diğer teknik alanlar için de yararlıdır. Bu yüzden henüz ne yapmak istediğinizi bilmiyorsanız (büyük olasılıkla), erken iyi olmak iyi bir şeydir. Üniversitede, birkaç şey sizi daha fazla profesör için deneylerini kodlamaktan daha yararlı hale getirecektir.
Sonra elbette demoları unutmayın. Depremin bir kopyasını (açık kaynak) almak ve örneğin bir satırlık bir değişiklik yapmak (örneğin yerçekimi kuvvetini değiştirmek) ve örneğin yeniden derlemek güzel olabilir. Ayrıca koduna bakın. Çok fazla anlamayı beklemeyeceğine güvence verin, şimdi anlamsız görünebilir, ancak daha sonra, henüz öğrenmediği yabancı dillerdeki gazeteler de öyle. Yine de, şeylerin bir şeylere atandığını, nesnelere ne yapılacağını söylendiğini ve yerçekimini ayarladığımız yer vb. Görebildiğini söyleyebilirsiniz.
14 yaşındayken programlamaya başladım. (50 kayıtlı öğrenciden 47'si) yıl ortasında okulu bıraktı ya da sadece önümüzdeki yıl ileri derslere devam etmemeye karar verdiyse, bununla kaldım ve çok önemli bir şey öğrendim:
Programlama size hiçbir şeyden bir şey yaratma yeteneği verir. Kelimeleri bir ihtiyacı karşılayan yararlı bir araca, kendiniz ve arkadaşlarınız için eğlenceli bir aktiviteye veya sadece gösterebileceğiniz bir şeye dönüştürme gücüne sahipsiniz. arkadaşlar ve "Bak ne yaptım."
Bize başlamak için "Merhaba Dünya" öğretildi, ama Kodumu kullanıcı ile etkileşimde bulunana kadar hiçbir ilgim yokt. Bize "cin" ile girdi okumamız öğretildiği anda, sınıfta oynayabileceğimiz bir Mad-Lib programı yapmaya başladım. İlk engelim boşluk içeren girdiyi okumak, ardından çıktıyı biçimlendirmekti. Daha sonra bu hikayeleri bir dosyaya kaydetmek istedim ve bu yüzden IO dosyasını öğrenmem gerekiyordu. Hedeflerime ulaşmak için engellerle başa çıkmak beni meşgul eden şeydi.
Daha sonra yıl içinde ağ yöneticilerinin "Net send" ve bilgisayar dersi sırasında iletişim kurmak için kullandığımız Novell SendMessage istemcisini kullandıklarını keşfettik ve öğrenciler bunu bir testi aldatmak için kullandıktan sonra devre dışı bıraktılar. Yani yöneticilerin devre dışı bırakıldıkları kişinin yerini almak için bir sohbet odası yazdım. Oluşturduğum ilk gerçekten kullanışlı şeydi. Battle.Net'in sohbet sisteminden sonra, kullanıcı kaydı, moderatörler ve hatta kullanıcıların kurcalanmasını önlemek için temel bir şifreleme ve gölge dosyası sistemi (öğrencilerin programa erişebilmesi ve kullanabilmesi için tüm dosyaların paylaşılan bir ağ sürücüsünde bulunması gerekiyordu). Bunlar zaten farkında olduğum kavramlar değildi, ama bir sorunu çözmek için kendi başıma bulduğum çözümlerdi. Bana göre, programlama sevinci buydu.
Bu nedenle, soruyu doğru bir şekilde cevaplamak için, yazılım geliştirmenin ne anlama geldiğinin tartışılmasının ötesinde, etkileşimli bir demo muhtemelen harika bir fikirdir. Tercihen sahip olduğu bir sorunu çözen bir şey, örneğin tüm bu dev resimleri kamerasından otomatik olarak yeniden boyutlandırmak gibi. Biraz daha karmaşık olsa da, arkadaşlarıyla paylaşabileceği basit bir mesaj bırak web sayfasıyla eğlenebilir. Yeni bir mesaj gönderildiğinde birisine e-posta gönderebilir ve sizinkinin yerine e-postasına göndermek için kodu düzenlemesini sağlayabilirsiniz. Ayrıca, sayfanın son X yorum sayısını göstermesini sağlayın ve bu sayıyı da ayarlamasını sağlayın ve sonuçların ne olduğunu görün.
Eskiden çalıştığım yerde bazen çocuklar geliyor iş deneyimi vardı. Bazıları bilgisayarlarla ilgileniyordu, bazıları değildi. Onları bir bilgisayarın önüne oturttular ve bir tahmin oyunu yazmalarını isterdik. (Bilgisayar rastgele bir sayı seçer, kullanıcı tahminlerinin çok yüksek/düşük olup olmadığı hakkında geri bildirim alır.) Yapması basit ve gerçekten eğlenceli bir sonuç. Hiçbir şey onlara ONLARIN yaratabileceği şeyi somut olarak göstermekten daha güçlü olamaz.
Bunun bir efsane mi yoksa gerçek bir hikaye mi olduğundan emin değilim, ama neden bir gün şanslı sertlik hakkında okuyordum. Bir hikayenin bir parçası, bir trende tanıştığı bir çocuğa (hatta belki de çocuklara) programlamayı nasıl gösterdiğiydi.
Bazılarınızın bildiği gibi, _ neden bir Ruby adam (ve Ruby, normal insanlar için oldukça arkadaş canlısı)). Ruby'de bir oyun üzerinde çalışıyordu, bir çocuk ne yaptığını görmek için ona yaklaştı.Onlara sonuç önce - çalışma oyununu gösterdi.Ardından çocuğa nasıl yapabileceğini gösterdi. değiştir kodu değiştirmek için şeyler.O zaman çocuğa play kodu ile izin ve değiştirilmiş sonucu görmek.
Bunun genel iş akışınız olması gerektiğini düşünüyorum - sonuç, değiştirin, oynayın. İnsan dostu dilde bir proje (oyun en iyi seçim olurdu) bulmalı ve çocuğa göstermelisiniz.
Üzgünüm, bu hikayenin doğru olup olmadığı hakkında hiçbir fikrim yok. Hala çok havalı.
Ayrıca, bir şey daha. Delphi'de programlama ile ilgili ilk deneyimimi hatırlıyorum -
MessageBox. Çok iyiydi, çünkü bilgisayarı istediğim şeyi yapabilir ve sonucu hemen görebilirim.
Sonra mikrodenetleyiciler ortaya çıktı. Daha da iyilerdi, çünkü kodum gerçek dünyayı değiştirebilirdi. Yani, değişkene bir değer atamak o kadar soyut durdu ki, çıkış portunda bir voltaj görünmesine neden oldu, bu da motorumun hareket etmesine neden oldu. Çok iyiydi. Bu yolu seçmek isteyebilirsiniz - çocuğa Arduino gibi bir şey gösterin.
Görüyorsunuz, sanırım her şey sonucu değiştirmek ve görmekle ilgilidir.
Birisinin dikkatini çekmek ve tutmak istediğinizde, SORUN, anlatma. Su içmek gibi basit bir görevi nasıl gerçekleştireceklerini sorun. Daha sonra onlara sağladıkları talimatları izleyerek ("Koridordan aşağı inin" gibi) aslında ne zaman sola dönme, sağa dönme, durma vb. Sorunları ele almadığını gösterin. Bu sınır koşullarını anlamak ve idare etmek, iş bu programlama! Sonra meta-görevleri bir adım öbür öteki görevin dışında yapmak için "do-until" döngüsünün "duvara gelene kadar yürü" türünü nasıl ele alabileceğini gösterebilirsiniz yürüyüş.
Programlama dilini bilmiyorum ama HTML'nin başlamak için iyi bir yer olduğunu düşünüyorum. Çünkü hemen sonuç alırsınız .... ile başlayın
Selam Dünya
Sonra şunları yapın:
Merhaba <b> Dünya </b>
Vb.
Çocukları anlamanın en iyi yolu önce çocuk olmaktır ..! Çocukken ödev, dayatma vb. Yapmaktan nefret ederdim. bu yüzden içinde dikkatlerini çekebileceğiniz giriş noktaları var. Her şeyi açıklayamasak da 30 dakikalık bir sürede onlara ilgi duyan çocukların ilham kaynağı bulduğu bir tür poz vermeye çalışabiliriz. Ödevler vb. Gibi ilgili konularla başlayın. Bir bilgisayarın sadece birkaç saniye içinde nasıl yükleme yazabileceğini söyleyin.
Herşeyin gönlünüzce olması dileğiyle.. ! aferin
Temel olarak her programlama dilinde var olan programlamanın temelleri şunlardır:
* Muhtemelen ilgili sırayla yapılmalıdır.
Bunlar muhtemelen açıklanabilecek en önemli şeylerdir. Tüm bunlardan sonra, muhtemelen yapmayacağınız yeterli zamanınız varsa, grafikleri açıklamayı deneyin.
- Çocuk (lar) kesinlikle kesinlikle sıkılmayacak kadar yeteneklidir. Programlama kullanılarak yapılan şeylere birkaç örnek verin.
Öncelikle, herkesin on beş yaşında eğitimli bir çocuğun neler yapabileceği veya anlayabileceği konusundaki beklentilerini yeniden ayarlamama izin verin.
İki hafta boyunca işyerimde bir tane var, programlama deneyimi olmayan. Bir bilgisayarın nasıl kullanılacağını biliyor ama “güçlü kullanıcı” gibi bir şey değil.
Ona bir veritabanını nasıl sorgulayacağımızı gösterdik ve soruları yanıtlıyor ve kendi SQL'lerini yazarak factoidleri kazıyor. Ona bir elektronik tablo verdik ve bazı istatistiksel göstergeleri hesaplamasını sağladık; okulda öğretilen matematik, ancak bir elektronik tablonun otomasyonu olmadan. Ve ona, potansiyel tedarikçileri, bazı okul projelerine oldukça yakın hissetmesi gereken google yakıtlı şeyler hakkında biraz pazar araştırması yaptık. Şu anda, web sitemizin bir kısmını gelecek hafta düzenlemesine izin vermesi için uygulamalı bir xhtml + css öğretici aracılığıyla çalışıyor. Roket bilimi bilgimiz veya büyülü güçlerimizle onu etkilemeye çalışmadık ve programlamaya şüpheyle yaklaşan şeyleri yapmak için kendisini faydalı kılıyor.
Şimdi 30 dakika ile, ona o gün ne gördüğünü, nelerle ilgilendiğinizi düşündüğünü sorarak, şirketteki rolünüzü açıklayarak, üzerinde çalıştığınız bir şeyin hızlı (önceden hazırlanmış) bir demosunu vererek başlayabilirsiniz (veya hızlı düzenleme-çalıştırma geri bildirim döngüsü olan herhangi bir şey, jsdo.it iyi bir öneriydi). Bilgisayarların ilgilendiği şeyleri tartışın ve ilgilendiği bazılarını bulun veya daha akıllı programların bazı etkinlikleri geliştirebileceği yollara katkıda bulunmasını sağlayın. Yarım saat uygulama için çok kısadır, ancak iyi bir tartışma için yeterli olmalıdır.
Yapmış olduğunuz bazı şeylerin sonucunu gösterin. Projelerdeki rolünüz hakkında genel olarak konuşun. Belki ilgileniyorsa merhaba bir dünya yapmasına yardım edebilir.
Programlama için en sevdiğim benzetme, Satanicpuppy gibi sihirbazlık (harry potter tarzı). Bunu teknik olmayan akranlar ve çocuklar için kullanıyorum, oldukça iyi çalışıyor gibi görünüyor ve bilgisayarların bize verdiği gücü kesinlikle iletiyor.
Bilgisayarlar bizim sihirli değneklerimizdir. Bileğin ve büyülerin doğru hareketi ile sihir yapmamıza izin veriyorlar. Programcılar olarak, öncekilerimiz tarafından çalışılan ve rafine edilen büyü kitaplarına (kütüphanelere) erişebiliyoruz. Yeni büyüler ve büyüler yaratabilir veya mevcut büyülerle çalışabiliriz. Bazıları kolaydır, bazıları gerçekten etkili bir şekilde kullanmak için daha fazla pratik gerektirir, genellikle aynı problemi çözmek için ödünleşimler ve birçok farklı yol vardır (iyi bir iksir mi yoksa bir büyücü mü kullanmalıyım?).
Bu genişletilmiş metafor gerçekten iyi gerilebilir ve genellikle programlama tutkumu alanın dışındaki kişiler tarafından erişilebilir bir şekilde aktarmamı sağlar.
Herhangi bir bilgisayarın içinde verilen bir dizi problemi çözmeye adanmış sanal bir dünya yaratmak.
Bu, önce problemleri anlayarak, gerekli dünyayı modelleyerek, daha sonra bilgisayara dünyanın belirli durumları için ne yapılacağını ve kullanıcıdan gelen girdileri açıklayarak yapılır.
Bu, onu daha genç yaşta nasıl ilk anladığımı o zamandan beri edindiğim deneyimin temelleriyle birleştirir.