Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Sıfırdan yazılım öğrenmeye başlayan birisi nereden başlamalı?
Yapacağın işe göre bir seçim yapıp başlayabilirsin.
C dili = aşırı hız gerektiren direk donanıma emir verecek kodlar yazılıyor. İşletim sistemleri C ve C++ karışı mıdır?
C++ = genelde oyun için tercih edilir birçok Linux yazılımı bu progaramlama diliyle yazılmıştır.
C# = basit ve orta düzel Windows uygulamaları yazmak çok kolay. Web sitesi yazabilirsin. Unity 3D ve Unreal Engine ile oyun yazabilirsin.
Python = yapay zeka kütüphanesi oldukça pazla olduğundan bayağı tutulan hız olarak diğer dillere göre yavaş çalışan bir dil. Kodların okunurluğu iyi olduğundan bayağı tutulan bir dil.
Java= Android uygulamaları geliştirmek için Java veya Kotlin gayet ideal. C#tada kütüphane var yazılabiliyor tabii ama geliştiriliyor henüz.
Genel anlamda başlangıç için C# veay Python öneririm. Türkiye'de C# epey tutulmakta özellikle web programlamada .net Core MVC falan kullanılıyor.
Yazılım dünyasına giriş yapmak istiyorum, ama pek bilgim yok. O yüzden en baştan başlayacağım şimdi ilk olarak ne öğrenmeliyim algoritma mı, programlama dilimi veya başka bir şey mi ile mi başlamalıyım? Kısaca nasıl bir yol izlenmeli.
Deneyimlerime göre şu an ilk alan seçip o alanda olan temel şeyleri öğrenmen ve projeler yaparak kendini geliştirmek iyi bir seçenek gibi geliyor. Başlamadan önce veya başlarken bi algoritma mantığına bakabilirsin, yani bildiğim kadarıyla algoritam bir şeyi nasıl yapacağını ve bu şekilde bir plan ve takım çalışması var ise ona göre plan ve görevleri vb. vs. anlamanı sağlıyor. Şu video'da algoritamya bir örnek var faydalı bulduğum..
Eğer daha farklı bir şey ise veya daha farklı bir kullanım için/de kullanılıyor ise söylenirse iyi olur bilgilenmek açısından diye düşünüyorum.
@count@özgün deniz İkinize birden cevap vereyim. Takıldığım nokta her şeyden önce "Algoritma öğren" diye yorum atanlar. Bunların hiçbiri algoritmanın ne olduğu hakkında fikir sahibi değil. Sen kod yazarken, bir problem çözerken zaten bir algoritma yazmış oluyorsun. Arkadaşın Algoritma hakkında Vikipedia linki attığı yerde de "Algoritma, belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan yol." yazmakta. Algoritmayı zaten kod yazarken, bir problem ile karşılaştığında kendin yazmış oluyorsun. Gelmişsin CS50 linkini atıyorsun, bunlar problem çözme becerinizi geliştirmekte.
Kısaca: Kod yazın, hata alın, algoritma zaten yazacaksınız.
Öncelikle ne amaçla programlama öğrenmek istiyorsunuz onu düşünün ve mutlaka 1 adet dil seçin ve yürüyün. Algoritma ve mantığını zaten zaman içerisinde kendi kendinize öğreneceksiniz.
Kodlama yapa yapa öğrenilir programlama. Ders alarak değil.
@count@özgün deniz İkinize birden cevap vereyim. Takıldığım nokta her şeyden önce "Algoritma öğren" diye yorum atanlar. Bunların hiçbiri algoritmanın ne olduğu hakkında fikir sahibi değil. Sen kod yazarken, bir problem çözerken zaten bir algoritma yazmış oluyorsun. Arkadaşın Algoritma hakkında Vikipedia linki attığı yerde de "Algoritma, belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan yol." yazmakta. Algoritmayı zaten kod yazarken, bir problem ile karşılaştığında kendin yazmış oluyorsun. Gelmişsin CS50 linkini atıyorsun, bunlar problem çözme becerinizi geliştirmekte.
Kısaca: Kod yazın, hata alın, algoritma zaten yazacaksınız.
Bunlar anlamaz. Bildikleri tek şey, sağdan soldan görüp, algoritma öğren demek
Algoritma tanımını öğrenmek yalnızca kod yazarak kazanılacak bir bilgi değil bana göre. Kaynak yönetimi vs. de algoritma kurmanın unsurlarından. İyi algoritma kurmayı öğrenmek ancak kod yazmak istemeyen biri için illaki programlamaya başlayıp C falan öğren mi diyelim? Doğrudur kod yazarak da kendini geliştirirsin. Ancak orada yapmaya ve geliştirmeye çalıştığın şey de özünde algoritma kurma becerisi olacak yani.
Artı olarak bir şeyi düzgünce açıklamak ile bir şeyi etrafa saldıran bir canvar gibi açıklamak arasında fark var.
Tartışma üslubun yerinde olsaydı sana hak bile verirdim gibime geliyor.
Haklısın, üslubun yanlış haksız duruma düşüyorsun. Kalkıp burda algoritmanın ne olduğunu açıklayıp cevap vermek yerine atağa geçiyorsun. Doğru bir yaklaşım değil.
@özgün deniz Benim kızdığım nokta, direkt algoritma öğren demek. Hiçbir açıklaması yok, sadece algoritma öğren diyorlar. Algoritma öğren demek nedir? Bunun derininde ne yatıyor? Sağdan soldan duyup burada yorum yapmalarını saçma buluyorum sadece. Arkadaşın kafasında ne olduğunu cidden merak ettiğim için direttim biraz.
@özgün deniz Benim kızdığım nokta, direkt algoritma öğren demek. Hiçbir açıklaması yok, sadece algoritma öğren diyorlar. Algoritma öğren demek nedir? Bunun derininde ne yatıyor? Sağdan soldan duyup burada yorum yapmalarını saçma buluyorum sadece. Arkadaşın kafasında ne olduğunu cidden merak ettiğim için direttim biraz.
Tartıştığın yer Instagram yorumu değil teknoloji forumu. Burada insanları bilginle çürütmen herkes açısından daha sağlıklı olur. Boş konuşan boş konuşmaya devam eder. Sen ortama kalite kat, ufak bir öneri.
Tartıştığın yer Instagram yorumu değil teknoloji forumu. Burada insanları bilginle çürütmen herkes açısından daha sağlıklı olur. Boş konuşan boş konuşmaya devam eder. Sen ortama kalite kat, ufak bir öneri.
@count@özgün deniz İkinize birden cevap vereyim. Takıldığım nokta her şeyden önce "Algoritma öğren" diye yorum atanlar. Bunların hiçbiri algoritmanın ne olduğu hakkında fikir sahibi değil. Sen kod yazarken, bir problem çözerken zaten bir algoritma yazmış oluyorsun. Arkadaşın Algoritma hakkında Vikipedia linki attığı yerde de "Algoritma, belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan yol." yazmakta. Algoritmayı zaten kod yazarken, bir problem ile karşılaştığında kendin yazmış oluyorsun. Gelmişsin CS50 linkini atıyorsun, bunlar problem çözme becerinizi geliştirmekte.
Kısaca: Kod yazın, hata alın, algoritma zaten yazacaksınız.
Bunlar anlamaz. Bildikleri tek şey, sağdan soldan görüp, algoritma öğren demek
Ben de fikrimi şöyle savunayım, neticede bir işi öğrenirken güncel ve uygun seviyedeki teknik hakkında bilgi sahibi olunmalı.
Misal orta çağda tıp eğitimi alan birisi ile bugün tıp eğitimi alan birisinin öğrendiği şeyler çok farklı, teşhiste kullanılan alet adavattan güncel ameliyat tekniklerine ya da kullanılacak ilaçlara kadar tabi.
Yahut ikokul öğrencisine verilen bilgiler ile ortaokul öğrencisine verilen bilgiler de çok farklı. İlkokulda dört işlemi öğrenmeye çalışan öğrenci ortaokulda geometri öğreniyor vb.
Şimdi ikinci örnekten ilerleyeyim, bir kişi düşünelim, hayatında matematik görmemiş. Ben de geometri öğrenmek istiyorum diyor. Bu kişiye öncelikle git önce aritmetik öğren, sonra temel geometrik şekilleri öğren, çevre nedir, açı nedir, alan nedir vb. kavramları öğren diyoruz.
Şöyle bir soru buldum internette:
Şimdi bu kişi, bu şeklin alanını hesaplamak için bir açısı 90 derece olan üçgen dik üçgendir, alanı şöyle hesaplanır, açıları eşit üçgenler şöyle oranlanır, taban oranından böyle alan bulunur, bu üçgenin alanından bu çıkarsa şu olur vb. vb. bilgilere sahip değilse bu sorunun cevabını bulamaz. Alır eline cetveli, iletkiyi, deneme yanılma yaparak, şu sayı şu kenarın buna bölümünün yarısı yapıyormuş yav diye kendi kendine geometriyi icat ederek bu soruyu çözmesi yıl alır.
Ben bu durumda nasıl yazılım öğrenmek isteyen birisine "algoritma öğren" diyorsam, bu soruyu çözmek isteyen birisine de bu dediğim şeyleri (temel geometri diyelim) öğren derim.
Algoritma için bir sorunun çözüm yolu gibi basit bir ifade kullanamayız. Her sorunun kendi çözüm yolu var elbette. Algoritma eğitimi de "üç sayıdan en büyüğünün hangisi olduğunu nasıl buluruz: ilk sayı ile ikinci sayıyı kıyaslarız, hangisi büyükse onu da üçüncü sayı ile kıyaslarız, son kıyaslamadan çıkan sonuç aradığımız cevaptır, algoritma bu kadar hadi şimdi gidip işletim sistemi yazın" gibi bir şey değil. Algoritma öğrenmek, bu temel algoritmaları öğrenmektir, yani yazılım bilmeyen birisi değişkenler, operatörler, dögüler vs. vs. derken sorting algoritmalarını, search algoritmalarını vb. kıyaslayarak, deneyerek, öğrenerek temel algoritma eğitimini tamamlar.
Yani algoritma öğren demek; yazılımcı adayına "derdini bilgisayara nasıl anlatabilirsin, en iyi nasıl anlatabilirsin, git onu öğren" demek oluyor, bu da yanlış bir şey değil. Sorun şu ki siz program yazmaya başla, kendin çözüm bulursun diye ifade ediyorsunuz bunu. Temel algoritmayı öğrenmiş birinin örnek bir soruna çözüm bulması belki dakikalar sürecekken kendi kendine tekerleği baştan icat etmeye çalışan birisi için süre veremem bile. Çünkü en temelden bahsediyoruz, kendi sorununu bile tam olarak anlayamayabilecek, kendi derdini tespit edemediği için stackoverflowda bile çözümü nasıl arayacağını bilemeyecek birisinin seviyesi bu.
Yazılım dışı şöyle bir örnekle işin basitliğini anlatabilirim, bina inşa etmeyi öğrenmek istiyorsunuz. İşin tekniğini (best practice diyelim) öğrenmezseniz, deneye yanıla öğrenmeye çalışırsanız bir ayda bitecek inşaatı 1 yılda bitirirsiniz, bu esnada pek çok inşaatınız yıkılır, işçileriniz ölür, çok miktarda çimento, demir vesaire zayi olur. En sonunda ortaya bir bina çıkar ama onun da sağlamlığı şüphelidir, yağmur yağdığında damı akar, deprem olunca hasar görür, siz bu aşamaları deneme yanılma esnasında deneyimlemediğiniz için ne olacak bilemezsiniz. Ayrıca çok daha az demir/çimento vb. kullanarak elde edebileceğiniz sağlamlığı tekniği bilmeden çok daha fazla malzemeyi gereksiz yere kullanarak elde etmiş olabilirsiniz. Mesela 5 katlı bina yaptınız, bir sonrakinde 20 katlı bina yapmanız gerekiyor, deneme yanılma ile öğrendiğiniz pek çok şey çöp olur çünkü 5 katlı bina için geçerli bilgiye sahipsiniz, orada bulduğunuz hesaplar ile 20 katlı bina yapmaya kalkıştığınızda o bina gene yıkılır, 20 katlı binanın temeli farklı olmalıdır, statik hesapları ayrı olmalıdır vb. ama siz işin tekniğini öğrenmeden müteahitliğe soyunduğunuz, sonsuz malzeme, işgücü ve vaktiniz varmışçasına deneme yanılma süreciyle bu işe girdiğiniz için sorun yaşarsınız.
Yazılımla ilgili de şöyle örnek verebilirim, oop design patternlar var bilindiği üzere, bunlar bazı sorunlar karşısında en uygun çözümler sunan belli kalıplardır. Belli bir büyüklüğe sahip bir uygulamayı, mesela bir oyunu oop prensiplerini, patternları vb. bilmeden yapmak mümkün mü? Elbette mümkün, ancak sonra yaptığınız oyun neden kasıyor, neden birkaç yıllık bilgisayarda çalışmıyor, neden bu kadar ram yiyor, neden stabil çalışmıyor vb. sorunlarla karşı karşıya kalırsınız. Ancak diyelim ki biri "git design patternları öğren" demişti size ve siz öğrenmiştiniz, ortaya optimizasyonu yapılmış yağ gibi akan bir oyun çıkar.
Örnekte kullandığım design patternları biliyorsunuz diye onları kullanmak zorunda değilsiniz elbette. Bilmeden, sırf böyle bir pattern varmış o zaman kullanayım diye kullanılırsa cargo cult programming denen şey oluyor zaten. Ama design patternları öğrenmeden, onlar ne işe yarar, hangi durumda kullanılır, şu durumda kullanmaya gerek var mı yok mu sorularının cevabını hiç veremeyiz. Algoritma bilgisi de bunun gibi, edinilmesi gereken bir şey, öğrenmek gerekli, kötü çalışan, yavaş çalışan, 50 satırda yapılabilecek şeyi 1000 satırda yapan bir kodu icat etmektense uygun tekniği öğrenmek daha iyidir. Daha ilerde karşılaşılacak çok daha zor durumlarda da bu bilgiler kullanılarak yeni çözüm üretebilmek için (deneme yanılma lüksünüzün olmayacağı gerçek sorunlarda) bu bilgileri kullanacaksınız, üzerine ekleyeceksiniz. Üzerine ekleyeceğiniz sağlam bir temelin olması önemli.
@566156 algoritmayı öğrenmelisin demişsin ya. Sence algoritma nedir? Algoritma dediğin şey nedir? Bize bir örnek verir misin? Çok merak ediyorum bu algoritmayı öğren diyenler acaba ne düşünüp bu öneriyi yapıyor. Önerdiğin şey ile alakalı bir kaynak verebilir misin?
@mxxm aynı şeyi size de sorayım. Algoritmaları öğren diyorsunuz ya. Bu algoritma kafanızda nasıl bir şey çok merak ediyorum. Bize birkaç örnek verir misiniz?
Bir cümlede algoritma nedir diye açıklayacak olursam: Algoritma, bir problemi çözmek için izlenmesi gereken mantıksal adımlar bütünüdür. Programlamada ise bu durum "bilgisayar gibi düşünmek" cümlesine karşı gelebilir. Örnek vermeye gelirsek algoritma için sayısız örnek yazabiliriz şöyle: Adımları belirleyebilmek, kontrol yapıları kullanabilmek, veriler üzerinde işlem yapabilmek, soyutlama yapabilmek, karmaşıklık analizi yapabilmek vs. örnek verilebilir.
@566156'ı 1 - 1.5 aydır tanırım. macOS ve teknolojiye ilgili birisi.
Konu içinde ismi geçen şahıs kendisi her şeyi biliyor zaten Sorsan programlama dillerinin hepsini kendi yazmıştır. Gitmiş internetten bir şey öğrenmiş yanlış bilgi veriyorsun diyordu bana.
Konuya gelirsek;
Algoritma, yeni doğmuş bir çocuğa hayatı öğretmek gibidir. Nasıl yapacağını, nasıl ilerleyeceğini adım adı anlatırsın.
Dil öğrenmeden önce "Bilgisayar nasıl çalışır, donanımlar nasıl haberleşir, işlemci kodları nasıl işler, algoritma mantığı nedir, yazılımın amacı nedir" gibi temel kavramlar ile başlayın.
Direkt olarak eksik temelle bir dile başlarsanız bir gün gelir takılır kalırsınız. O yüzden temel kavramlar ile başlayın.