Merhaba, pyton programlama dilini sitenizdeki belgeleri okuyarak, ders videoları izleyerek ve s öğreniyorum ve orta denebilecek bir seviyeye geldim. İşin mantığını anlıyorum, kendimce küçük ve basit programlar yapabiliyorum. Fakat tek sorunum, tecrübemin olmaması. Yani bu öğrendiklerimi büyük projelerde nerede ve hangi amaçla kullanıldığını bilmiyorum. Mesela 100 (örnek açısından 100) satırlık basit bir program yazayım, ama aynı programı profösyönel biri hem daha kısa, hem de daha kolay yoldan yapabilir. Sonuç olarak yaptığım program amatörce yapılmış olur ve pek tercih edilmez. Demek istediğim, bu tecrübeyi nasıl edinebilirim ? Yardım alabileceğim bir tanıdığım ve s yok malesef. Önerileriniz için memnun olurum, teşekkürler
Python kullanan firmalara stajyerlik başvurusu yapabilirsin ve GitHub’da bulunan büyük projeleri okuyabilirsin
Merhaba, kod okumak kitap okumak gibidir. Okudukça dağarcığın artar, endişelenme, sadece emek et.
Tabi arada deneme yazısı da yazabilirsin.
Kısaca : Just do it
Edit: competitive programming i araştırmak isteyebilirsin.
Bütün programlama dillerindeki zerrelerden yapı oluşturma mantığı aynıdır.
Programlama dili olarak henüz sadece Python öğrendim ancak yanılmıyorsam bütün programlama dilleri için bunu söyleyebilirim.
Elinizde string, int, list, tuple, dict ...
gibi veri tipleri oluyor, hepsinin birbirinden farklı avantajları var ve ortaya bir proje (yapı) çıkaracağınız zaman bu veri tiplerinin birbirleri üzerinde olan avantajlarını değerlendirip kullanacağınız uygun veri tipini seçip kodlarınızı seçtiğiniz verilere göre şekillendirmeniz gerekiyor. Bu yazdığınız kodları da bir mantık ve düzen ile amacınıza -projenize- göre şekillendirdiğiniz zaman ortaya bir proje çıkıyor.
Yani bir proje meydana getirmenin aslına bakarsanız bahsettiğiniz profesyonel kimseler bu veri tiplerini iyi bildiği için ve harika bir yaratıcılıkla kullandığı için kodların kısaldığını ve şahane bir proje çıktığını göreceksiniz.
Kısacası zerreleri iyi bilirseniz, oluşturacağınız yapının kalitesini arttırırsınız demek istiyorum size.
Zerre derken veri tiplerinden bahsettim ancak pek çok şeyi bu tanımıma dahil edebilirsiniz.
lambda fonksiyonlar gibi. Ya da gömülü fonksiyonlar gibi …
Peki bu zerreler ile ilgili azami bilgimizi nasıl arttıracağız ?
Benim önerilerim :
"Bomboş bir py uzantılı dosya açıp farklı farklı şeyler denemek"ten kastım ufak ufak şeyler denenmesi aslında. Yani kendimden şöyle örnek vereyim :
Bomboş bir py dosyası açtım ve canım biraz string metodlarıyla oynamak istedi ve
text = "merhaba kelimesinin ilk harfi büyük olacaktır"
print(str(text.capitalize().split()[:1]).replace("[", "").replace("]","") + text[7:])
Bu kodları yazdım. Dedim ki “merhaba” ile başlayan bir text olsun ve sadece bir satırda bu “merhaba” karakter dizisinin başına ve sonuna kesme işareti koyayım ve bu kelimenin baş harfini büyük yapayım.
Ortaya çıkan şey de bu. Bu tip oynamalar yapmak çok gereksiz gibi gelebilir ancak inanın çok geliştiri şeyler. Ben bu şekilde bazı metotları çok daha iyi tanıdım mesela. Ki zaten bu şekilde veri tipleri hakkındaki bilgimi de arttırmış oldum. Sonuçta bu metotlar veri tiplerine ait.
“Devamlı olarak yeni bir proje oluşturmak” maddesini de birazcık açmak istiyorum. İlk maddede olduğu gibi aslında bu maddede de gerçek bir amaç yok. Bu da bir şeyler kurcalama yönünde ancak bu sefer ortaya bir yapı çıkarmaktır maksadımız.
Mesela Burada yaptığım basit bir proje var. Bu proje ile çok da fazla yeni bir şey öğrendim mi ? Hayır. Ancak pratik konusunda bu tarz şeyler gerçekten çok yararlı oluyor. Ki tecrübesizliğin en iyi ilacıdır bu.
İlk maddeyle asıl önemli farkı da hareket alanıdır. Bomboş bir sayfada mı aklınıza daha çok fikir gelir? Yoksa amacınızın belli olduğu bir projede mi ?
Ancak bu önerdiğim yöntemim de tecrübesizliğin en güzel ilacıdır dediğim gibi.
Özetle Python programlama dilini ve içindeki veri tiplerini vs. iyi tanırsanız oluşturacağınız projelerin kalitesini arttırırsınız ve Python’u iyi tanımak için de sürekli pratik yapmanızın yararlı olacağını anlatmak istiyorum size.
Şahsen
String den ziyade segment tree, binary indexed tree, graph, linked list vs.
data structures
diye araştırılabilir.
Bu arada benim sıralamam şu.
Kod hızlı ve etkili mi> kod anlaşılır mı > kod kısa mı(belki üşenip uğraşmam bile.)
Önemli olan algoritma yeteneği.
Cevaplarınız için çok teşekkür ederim. Önerilerinizi uygulayacağım. Biraz mükemmelliyetçi bir insanım. Bir işte çok iyi olsam bile, hala hiç bişey bilmiyormuşum gibi gelir bana. Bu gidişle ne zaman gönül rahatlığıyla orta seviyeli bir python programcısım diyebilim ? Yani demek istediğim, bir programlama dilinde belirli bir seviyeye geldiğimizi ve programcı olduğumuzu ne zaman anlarız ?
Bence tecrübe satırlarla belirlenemez. Lambda bilenler güzel bir örnek paylaşabilir.
Tecrübe satırlarla belirlenir demek istemedim zaten. Örnek olması açısından satır üzerinden anlattım. Zaman üzerinden ve s. de anlatabilirdim. Demek istediğim, kod yazarken nerede ne kullanacağını bilmek ve bu tecrübeyi nasıl kazanabileceğimiz. Ayrıca ne demek istediğinizi anladım, liste üreteçleri de aynı lambda gibidir, daha az kodla daha çok iş yapabilmemizi sağlar. Ama lambda’nın kullanım alanı kısıtlı diye biliyorum
Özgüven açısından demek istemiştim ben. Tabiki, öğrenmeye, gelişmeye her zaman açık olmalıyız. Ama ne kadar öğrensek ve gelişsek de “tamam artık bu projeyi yapabilirim” diyebilmek de önemli. Bunu demeyi başarabileceğimizi ne zaman anlayabiliriz ? Bir şeye başlayıp da yarıda takılmamak açısından.
Anadilim türkçe olmadığından, böyle yanlış anlaşılmalara yol açabiliyor, kusura bakmayın
Bunu en iyi siz bilebilirsiniz
“Başarısızlıktan korkma. Başarısızlık değil ama düşük hedef suçtur. Büyük girişimler, başarısız olsanız bile muhteşemdir.” -Bruce Lee
Sürekli deneyin ve bundan korkmayın. Bir proje yaparken bize gereken şeyler hakkında 100% bilgi sahibi olamayabiliriz. Fakat programcılıkta bu bir problem değil. İnternette tonla dokümantasyon okunmayı bekliyor. Bilmediğiniz bir şey olduğu zaman ufak bir araştırma size cevap çıkarıyor. İngilizce’niz varsa size bütün dokümanların kapısı açık.
Mesela kendimden örnek vereyim. Python’da application geliştirmeye yarayan PyQt5 adlı kütüphane ile ilk hesap makinemi yapmaya çalışıyordum. Hesap makinesine ait butonlardan birine double click atılırsa belirlediğim farklı bir tepkiyi vermesini istiyordum. Çok güzel. Fakat tek sorun, bunu nasıl yapacağımı “bilmemem”. Yani double click atıldığında tepki verebilecek bir fonksiyon lazımdı ve bunu bilmiyordum. Ben de açtım interneti araştırdım ve aradığım basit fonksiyoncuğu buldum.
Bu tip örnekler çoğaltılmaya fazlasıyla müsait. “Bilgi eksikliği bir problem değildir ancak işin mantığını kavrayamamış olmak bir problemdir demek istiyorum size.”
Şimdi size İngilizce üzerinden ve kendimden bir örnek vereyim. Bu meseleyi çok çok daha iyi anlayacaksınız diye tahmin ediyorum.
Ben İngilizce’nin söz dizimine hakimleşmiş durumdayım ve İngilizce filmlerdeki, kitaplardaki ya da videolardaki cümleleri anlayabiliyorum. Paragrafları okuduğumda bir şeyler çıkarabiliyorum. Ancak bazen bazı cümlelerde ve hatta pek çok cümlede anlamını bilmediğim farklı farklı kelimeler olabiliyor. Ya da farklı farklı phrasal verbler vs. Ancak bunlar benim cümleyi anlamama engel mi ? Hayır. Çünkü İngilizce’nin söz dizimini ve mantığını kavramışım. Anlamını bilmediğim şeyleri hemen internetten bulabiliyorum ve sonrasında cümleyi rahat bir şekilde anlayabiliyorum bu sayede.
İngilizce kullanarak Python’daki print fonksiyonunu açıklayacak olan bilgi verici bir metin yazmak istiyorum diyelim. Bunu programlamadaki proje yapımı olarak düşünün. Bu metni yazabilmek için
İngilizce’nin mantığını kavramış, “öğrenmiş” birine göre istekten başka hiçbir lazım değildir. Çünkü adam zaten olayın mantığını kavramıştır. Türkçe düşünür, ingilizce olarak aktarır. Türkçe düşünürken yansıtmak istediği anlamları İngilizce bir şekilde aynen metne yansıtmak mümkün olmayabilir bazenleri. Ancak bunun çözümü de çok basit. Sadece size doğru kelimeler ya da kalıplar vs. lazım ve buna ulaşmak internet ile gayet kolay.
Özetle size tam olarak anlatmak istediğim şey şu :
İşin mantığını kavramışsanız, yaşayabileceğiniz herhangi bir bilgi eksikliği problem yaratmaz.
Yani şimdi tam olarak sizin istediğiniz cevabı vereyim. Eğer Python’un mantığını kavramışsanız, “öğrenmişseniz” istediğiniz her projeyi yapabilirsiniz. Peki mantığını kavradığınızı nereden anlayacaksınız ? Bir proje yaptığınızda, bilmediğiniz bir şeyi internetten araştırıp kolay bir şekilde edindiğiniz o bilgiyi projenize aktarıp sorununuzu çözebiliyorsanız, bu işin mantığını kavradığınız anlamına gelir. Çünkü işin mantığını kavramamış olsaydınız gördüğünüz bilgiyi uygulayamazdınız da zaten. İngilizce’nin mantığını anlamamış birisi “geliştirmek” kelimesini araştırıp öğrendikten sonra “Yapmanız gereken tek şey kendinizi geliştirmektir” cümlesini nasıl kursun (İngilizce olarak)öyle değil mi ?
İşin mantığını kavramamıza yardımcı olacak ve bu konuda bizi geliştirecek olan etmenler nelerdir diye soracak olursanız ilk gönderime bakınız (“zerreleri iyi tanımak”)
Kısacası ve kısacası,
İşin mantığını çözdüğünüz zaman.
Umarım anlatmak istediğim iyi anlaşılmıştır. Biraz uykulu bir halle yazdığım için ne kadar başarılı yazdım tartışılır.
O kadar güzel ve açıklayıcı anlattınız ki, çok iyi anladım şimdi. Aklımda bu konu hakkında soru işareti kalmadı. Bu arada blog yazarlığı konusunu daha önce düşünmemişseniz, düşünün bence. Bu konuda çok başarılı olacağınız kesin. Ayırdığınız zaman ve verdiğiniz değerli bilgiler için teşekkürler
Merhaba, konu dışına çıkıyorum biraz ama bir şeyi de belirtmek istiyorum. Google translate eklentisi benim baya işime yaramıştı. Sana da öneririm. Bu eklenti, fareyle kelimeyi seçtiğinde hemen devreye giriyor. Kullanınca beni anlayacaksın. Belki de zaten kullanıyorsundur. Bilemem. Benimki sadece bir tavsiye.
İyi geceler dilerim.
Bu eklentiler beni her gün daha çok şaşırtıyor İncelerim, teşekkürler.