Geçmiş If ifadeleri Diziler, döngüler… Şimdi ne olacak?


9

Bir yıl önce bu duvara çarpmaya devam ettiğimde programlamadan vazgeçtim. Temel Android uygulaması oluşturmak istediğim için konuyu tekrar ziyaret ediyorum. Fakat sınırlı bilgimin yeterli olmayacağını hissediyorum.

İşte benim sorunum.

Birkaç kitap okudum ve C # / Java ile ilgili video eğitimlerini izledim, örnekleri takip ettim ve kitabı bitirdim. Sonunda her zaman beni daha sonra ne yapacağım konusunda şaşkına bırakmış gibi görünüyorlar.

Ne demek onlar size temel ve merhaba dünya uygulaması kadar size öğretir ve diziler daha sonra görünüşte kodlama dünyasına çıkmak ve bir şey yaratmak için nasıl bilmek bekliyoruz.

Burada bir şey mi eksik? Bunların tüm programların yapı taşları olduğunu biliyorum ama okuduğum kitaplar bana bir daha ne yapacağımı göstermiyor.

Sanırım kolay cevap 'kodlamaya başlamak' olurdu, ama nerede? Örneğin "Head First Java" yı okudum; parçası kadar onlar öğrendim her şeyi almak ve bir köpek yarış oyunu oluşturmak söylemek vardı ....

"hile ve sağlanan kaynak kodu bakmamaya çalışın, şimdi bunu yapmak gerekir" _ bu kesin bir teklif değil ama temelde bana söylendi .......

Yarım saat önce dizilerin nasıl yapılacağını açıklıyorlardı, o zaman herhangi bir teori olmadan çalışan bir oyun yaratmak istedim?

Bunu sormamın nedeni, en azından kodlamaya başlamak için bilmem gereken tek şey olduğundan korkuyorum, ancak bana küçük bir araç kutusu verildi ve bir gökdelen inşa etmem söylendi.

Herhangi bir tavsiye için teşekkürler


"Köpek yarışı oyunu" birçok şey anlamına gelebilir. Yeni başlayanlar için herhangi bir grafik bile var mı? Oluşturduğunuz şey herhangi bir grafik içermediği sürece, bunun yeni başlayanlar için mükemmel bir şekilde uygun olduğunu düşünürüm. Belki de sadece görüntü hakkında düşünmekten kaçınmak için
adam

Bu küçük araç kutusu ile bir gökdelen inşa etmek oldukça mümkündür - büyük programlar sadece bir sürü küçük bitin koleksiyonlarıdır . ŞİMDİ yapamayacaksınız - bir kuş evi inşa etmeye ve yolunuza çıkmaya başlamalısınız. Jhocking'in dediği gibi, henüz grafiklerle hiçbir şey yapmaya çalışmayın - başlangıç ​​öğelerinin her zaman biçimlendirilmemiş metne dayanmasının iyi bir nedeni vardır.
Loren Pechtel

Yanıtlar:


10

Ne demek onlar temel "merhaba dünya" app if's ve diziler kadar size öğretmek görünüşe göre kodlama dünyasına çıkmak ve bir şey oluşturmak için nasıl bilmek bekliyoruz.

Burada bir şey mi eksik? Bunların tüm programların yapı taşları olduğunu biliyorum ama okuduğum kitaplar bana bir daha ne yapacağımı göstermiyor.

Aslında hayır. Onlar değil. Tüm programların yapı taşları soyutlama ve yeniden kullanımdır. Programlama dilleri sürü bile yok olması diziler veya ifs veya döngüler.

Belirli bir programlama dilinin nasıl çalıştığının aksine, nasıl programlayacağınızı öğreten bazı harika kitaplar var, bu da okuduğunuz kitaplar gibi görünüyor.

HtDP Programları Nasıl Tasarlanır böyle bir kitap. Size programların nasıl tasarlanacağını öğretir. Ve bunu, problemlerin nasıl analiz edileceği, çözüleceği, algoritmalara ve daha sonra çalışma programlarına nasıl dönüştürüleceği için takip edecek tarifler vererek yapar.

"Tarif" in temel olarak "program" için başka bir kelime olduğunu unutmayın, bu yüzden kitap size insanların bilgisayarların yürüteceği programları oluşturmak için başlarında çalışacakları programları öğretir. Ne kadar serin? :-)

Yazarlar şu anda HtDP'nin ikinci baskısı için , ilk baskı yerine okumak isteyebileceğiniz bir taslak üzerinde çalışıyorlar . Zorunlu programlama ile ilgili materyal kaldırıldı ve henüz yazılmamış ikinci cilt Nasıl Yapılır Bileşenleri Tasarımında ele alınacak , ancak bu eksik bölümleri ilk baskıdan okuyabilirsiniz.

HtDP'nin hiçbir programlama bilgisi almadığını ve lise öğrencilerini hedeflediğini unutmayın. Ancak bunun sizi durdurmasına izin vermeyin: Bu, muhtemelen bazı erken bölümleri daha hızlı bitirebileceğiniz anlamına gelir, ancak sıkılmayacağınızı düşünmüyorum.

Somut Soyutlamalar da benzer damarlar boyunca iyi bir okumadır. HtDP gibi, herhangi bir programlama bilgisi varsaymaz.

Sözünü duyabileceğiniz bir diğer kitap da SICP olarak bilinen Bilgisayar Programlarının Yapısı ve Yorumudur. Şimdiye kadar yazılmış en büyük programlama kitaplarından biridir ve yine herhangi bir programlama bilgisi almaz.

Bu edilir , ancak, tam başlayanlar yönelik MIT kim çalışması . Herhangi bir programlama bilgisine üstlenmez ise Ve böylece, bu mu biraz varsayalım alanı elektrik mühendisliği, fizik ve matematik alanlarında örneğin bilgi,. Not: Bunların öğretilen kavramlarla hiçbir ilgisi yoktur , sadece alıştırmaları ve örnekleri anlamaları gerekir . Bu nedenle, önce HtDP veya Beton Soyutlamaları okumak ve daha sonra SICP okumak daha iyi olabilir.


1
Hiç bir deyim ya da bir tür bir programlama dili duymadım : Onlar olmadan tamamlanamazdı . ifloop
Monica'yı eski durumuna getirin - M. Schröder

@Martin Schröder: Deyimsiz programlama dilleri var loopve bunlar Turing tamamlandı.
Giorgio

@Giorgio: Mesela? AFAIK İhtiyacınız bazı döngü / Goto tür.
Monica'yı eski durumuna getirin - M. Schröder

2
@ MartinSchröder: Lambda Matematik Turing tamamlandı (aslında, bu terimin icat edildiği dildir) ve sadece işlev soyutlama ve işlev uygulaması vardır. Özyineleme bile yok, bunu bir düzeltme noktası birleştiricisi kullanarak kodlamanız gerekiyor! Flipside: SQL (2003'ten önce) veya daha incelikli bir şekilde Turing-complete olmayan birçok programlama dili var, C (Turing-bütünlüğü sonsuz depolama gerektirir, ancak C, herhangi bir şeyin adresini alabileceğinizi garanti eder ve sonlu boyutlu bir değişkente saklayın).
Jörg W Mittag

2
@ MartinSchröder: Ya da başka bir yol: sadece programı derlemenin derleyiciyi zor sorunları çözmeye zorlayabileceği programlama dilleri vardır . C # 'da 3-SAT problemlerini aşırı yük çözünürlüğü problemleri olarak kodlayabilir ve derleyicinin bunları çözmesini sağlayabilirsiniz ve Haskell'de aslında Durma Problemine eşdeğer problemleri tip sistemine kodlayabilir ve derleyicinin bunları çözmesini sağlayabilirsiniz. "Programlama dilleri" ni zorunlu diller olarak görüyorsunuz, ancak karmaşık hesaplamaları temsil edebilecek birçok zorunlu olmayan dil var.
Eric Lippert

5

Benzersiz bir durumda değilsiniz. Programlama dilinde başlangıç ​​kitaplarının çoğu, dilin temel yapı taşlarına daha fazla odaklanma eğilimindedir ve bu iyi bir şeydir. Bununla birlikte, sizinle birlikte olduğu gibi, sonunda kendimizi dilin sunduğu her bir yapıyı öğrendiğimiz, ancak bazı pratik problemleri çözmek için uygulayamadığımız bir durumda buluyoruz. Kısacası, metinsel örnekler ve pratik programlar arasındaki boşluk sadece kodla (Telastyn gibi) oynamaya çalıştığınızda köprülenebilir.Yeni şeyler öğrenirken genel olarak yaptığım şey:

  1. Kitaptan öğrenirken, kitaptaki bazı kod örneğinin / tekniğinin uygulanabileceği bazı gerçek hayat senaryoları bulmaya çalışın.
  2. Daha büyük ve karmaşık bir şey yapmak için kitapta verilen örnek programları karıştırmaya çalışın. Bundan sonra kodu en aza indirmeye ve aynı sonucu veren farklı bir kod yazmaya çalışın.
  3. İncelenen dilde pratik projeler için Google.
  4. Temel dil öğesini öğrendiğinizden emin olduktan sonra, seçtiğiniz bir çerçeveyi deneyin. İlk kez, daha kolay bir öğrenme eğrisi olan bir şey seçin.
  5. Mevcut bir projeye dikkat edin ve tasarımını incelemeye çalışın.
  6. Size uygulama kalıpları, OO tasarımı ve uygulaması vb.

Sonunda, programlama becerilerinizi geliştirmenize ve sonuçta sizi birçok gökdelenin mimarı yapmanıza yardımcı olacak uygulama ve araştırma ile ilgili.


2

C # için buna bakın. Çok eksiksiz: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Bunu sadece yarım yıl önce kullandım. Örnekler için #Develop derleyicisini kullanıyorum. Java ile size çok yardımcı olamıyorum çünkü neredeyse hiç kullanmadım.

Programlama zamanı geldiğinde, birçok insanın fark etmediği şey, tasarladığınız şey için genellikle ek bir SDK veya çerçeve kullanmanızdır. Bu yüzden hemen Java veya C # 'dan telefon programlamaya geçmeyi beklemeyin, çünkü muhtemelen iyi bir aracı çerçeveye ihtiyacınız vardır ve bunlar için öğrenme eğrileri programlama dilleri için öğrenme eğrileri kadar yorucu olabilir. Gönderdiğim C # öğreticisi sadece C # 'ı kaplasa da, içerdiği kavramların çoğu Java gibi Nesne yönelimli dillerde görülür.

Düzenleme: Açıkladığınız senaryo maalesef birçok öğreticinin izlediği yoldur. Böyle bir öğreticiyi takip etmek zorunda değilsiniz ve öğrenme şeklinize karşı çalışırsa, muhtemelen farklı bir tane denemek ve almak en iyisidir (hiç bilmiyorum, ancak Google muhtemelen yapıyor). Ancak emin olmak için, açıkladığınız kitabın yazarının kodu satır satır açıklayıp açıklamadığını kontrol edin. Ne kadar zeki olduğun için endişelenme, sadece bir dahi doğrudan bir kitaptan çalışan bir oyuna gidebilir. Sadece hatırlayın, öğreticiler hiçbir şekilde standart yetenek ölçümü değildir, bu yüzden size en iyi öğreten şey için gidin ve cesaretiniz yok!


Harika bir yanıt ve eklemek istediğiniz bir projeye karar vermeniz gerektiğini eklemek istiyorum. Google, projenin sunduğu sorunları çözmenin yolları. Karşılaştığınız sorunları çözmenin daha iyi yollarını arayarak çok şey öğreneceksiniz.
mortalapeman

1

Evet, süper temel programlar yapmak için bolca olmalı. Bu noktada, kitapların sahip olduklarından biraz daha karmaşık bir program yapmaya çalışıyorsunuz. Belirli bir şey yapmanız gerektiğinde ve bazı çalışmalarda bile nasıl olduğunu bilmediğinizde, İnternet'te arama yapar veya bir öğretmene / danışmana sorarsınız. Bu, daha gelişmiş özelliklere yol açacaktır (ve bilmeden yapabileceklerinizden daha karmaşık bir şey seçtiğiniz için genellikle bir çıkmaza yol açacaktır).

Hiçbir kitap size problemlerin nasıl çözüleceğini öğretmeyecektir.

Hiçbir kitap, programların nasıl tasarlanacağını açıklamayacaktır - bu pratikle birlikte gelir. Hiçbir kitap size önemsiz olmayan bir uygulamanın nasıl yapılacağını öğretmeyecektir - çok fazla nüans var; bu uygulamayı nasıl inşa edeceğinizi değil , nasıl oluşturacağınızı öğreneceksiniz .

Bu noktada öğrenmenin en iyi yolu dabab etmektir. Bir şey yaratmak için kod ile oynamak için. Tıpkı sanatçılar, giderek daha sofistike ve güzel görünen küçük tidbitleri çizmeye başladığında, programcıların bu keşifsel ilerlemeye ihtiyacı var.


1
"Hiçbir kitap programların nasıl tasarlanacağını açıklamayacaktır" - Programların Nasıl Tasarlanacağına dair yazarlar aynı fikirde olmayabilir :-)
Jörg W Mittag

1
@ JörgWMittag: Tipik programların bazı ortak teknikleri ve gösterileri olacak, ancak önemsiz olmayan her şey, 2013 itibariyle hala mekanize edilemeyen çok sayıda öğrenilmiş insan yargısı gerektirecek.
whatsisname

1

Programlamaya girmek için bir kitap kullanıp kullanmadığımı gerçekten hatırlayamıyorum, ancak o günlerde bir öğretici kitap yerine bir sözdizimi referans el kitabı olduğunu tahmin ediyorum. Programlama dilinin ne yapabileceğini öğretti, ancak onunla gerçek bir uygulamanın nasıl oluşturulacağını değil.

Neyse ki kitapta yazdığım bazı örnekler vardı (evet, o zaman indirilebilir kaynak kodu örnekleri yok) ve sonra nasıl çalıştığını anlamaya çalıştım. Programlamayı öğrenmek için en uygun yol bu değildi, ama benim için o zaman eğlenceliydi.

Ne tavsiye ederim kendinize " Zıplayan bir daire çizen bir Javascript uygulaması oluşturmak istiyorum" gibi bir hedef belirlemeniz ve daha sonra zaten elde edilmiş bilginizi SDK / belgelerinde ve / veya dilindeki diğer her şeyi başlatmak ve aramak için kullanmanızdır. bu yüzden.

Yeni bir dile atlamaya ve ilk adımımı öğrenmeye çalıştığımda kullandığım yaklaşım bu. Son günlerde okuduğum kitapların çoğu tatmin olmamıştı, çünkü aynı şeyi önemli bir şeyleri kaçırmıştım . Ama neyse ki şimdi internete sahibiz, bu yüzden öğrenmek istediğiniz dil ne olursa olsun, internette örnek kaynak kodu bulabilir ve öğrenmeye devam etmek için bunu kullanabilirsiniz.

düzenlemek Tabii ki, nasıl bir uygulama veya hangi süreci (SCRUM, XP, V-Modell) takip öğretmek için bazı daha genel kitaplar saf dil bilgisine iyi bir ektir.


1

Bu aşamada belirli bir dil hakkında çok fazla ayrıntı öğrenmek yerine programlama kavramlarıyla ilgili bazı genel kitapları da okumanız gerektiğine Jörg ile katılıyorum. Programları Tasarlama kitabı ile ilgili olarak, bu derste sizi ilgilendiren bir referans olarak kullanılır .

Aksi takdirde, başkalarının bahsetmediği başka bir araç, diğer geliştiricilerle çok fazla konuşmaktır . Benim için programlamayı öğrenmenin en etkili yollarından birinin, o anda karşılaştığım programlama, programlama dilleri, teknikleri veya somut problemler hakkında meslektaşları veya diğer programcılar ile tartışmak için uzun saatler harcamak olduğunu hatırlıyorum. Bilginin sözlü aktarımı, yeni beceriler öğrenmenin en etkili yollarından biri olabilir.


+1. Tek bir konuşmaya gitmeden konferanslara giden insanları tanıyorum. Sadece farklı bir bakış açısı elde etmek için koridorlarda takılmak ve toplam yabancılarla sorunları tartışmak için oraya gidiyorlar.
Jörg W Mittag

0

Açık kaynaklı projeler bulmanızı ve bunları kişisel sanal alanlara dönüştürmenizi öneririm. Mevcut davranışları değiştirin, yeni davranışlar ekleyin ve bazılarını da silin. Oyun oynayın, kendi fikirlerinizi uygulayın ve "bunu denediysem".

Başkasının açık kaynak projesini dönüştürüp kendi talebinde bulunmanı savunmuyorum.

Diğer çalışma projelerine kendinize sonraki adımlara nasıl ulaşacağınızı öğretmenin bir yolu olarak bakıyorum. İndirilecek açık kaynak kodlu birçok site var. Akla gelen birkaç şey: CodePlex CodeProject


-5

Bu kodlayıcıların hayatı. Bir teknoloji bilmiyorsunuz, ancak 'merhaba bir dünya' geliştiriyorsunuz ve bir uzman oluyorsunuz. Şirketlerde (gerçek hayat) böyle çalışır. İyi şanslar


2
Bu çok yararlı bir cevap değil.
svick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.