Yazılım Mühendisliği: Donanım ve Soyutlama

Поделиться
HTML-код
  • Опубликовано: 2 апр 2017
  • Yazılım Mühendisliği Kariyer Yönetimi serisinde bu haftaki konularımız Donanım ve Soyutlama. Bir yazılım mühendisinin donanımdan anlamaya ne kadar ihtiyacı var? Bir işlemcinin içinin nasıl çalıştığını bilmek ne kadar önemli? Bu soruyu sormakta %100 haklısınız. Bir mühendis bu konuları çok da derinlemesine bilmeyerek onyıllar süren çok çok başarılı bir kariyer yaşayabilir. Sonuçta pekçok teknoloji bu seviyelerin detayları ile biz kafamızı yormayalım diye var.
    Bu videoyu yaptığıma göre ben bu gerekliliği görüyorum tabi ama haklı olduğunuzu da söylüyorum. Bu çelişkili durumu biraz daha iyi ve detaylı açıklamam lazım. Ve dediğim gibi bu açıklamanın sonu bence beklemediğiniz ve enteresan bazı noktalara gelecek.
    Donanım bilgisi ve yazılım mühendisliğindeki en kilit konulardan biri olan Abstraction yani Soyutlama arasında enteresan bağlar olduğunu düşünüyorum.
    Soyutlama ve Donanım üzerine dikkatli düşünmemiz, gerek projeler esnasında karşımıza çıkan teknik kararlar gerekse kariyerimizi yönetmek anlamında bize çok şey kazandırabilir.

Комментарии • 54

  •  7 лет назад +73

    Yarım saatte anlattığınızı 4 yılda anlatamayan hocalar var. Harika harika harika

    •  7 лет назад +4

      Tabii ki işini en iyi şekilde yapmaya çalışan hocalarımızı ve öğrencilerimizi bu yorumumun dışında tutuyorum :)

    • @dylnz
      @dylnz 7 лет назад +2

      gercekten......

    • @huseyinbaykara2134
      @huseyinbaykara2134 5 лет назад +5

      Çoğunun öğretme amacı olmadığından böyleler.

  •  7 лет назад +24

    Kardeşim ağzına sağlık. Yağ gibi akıp gidiyor. Dinlerken acayip mutlu oluyorum. Süpersin!

  • @erdemayaz1103
    @erdemayaz1103 7 лет назад +5

    İşte muhabbet budur. Helal olsun. Programlama dillerinde, işletim sistemlerinde takılıp kalanları bir kenara bırakıp mühendislik konuşmuşsunuz.

  • @arinmis
    @arinmis 3 года назад +1

    1. sınıfta videoyu izlemiştim, iyiymiş deyip geçmiştim. Şu an 2. sınıfi bitirdim ve yeniden izliyorum. Gerçekten inanılmaz, RUclips daki benim izlediğim en iyi içerik kesinlikle bu. 30 dakikada aydınlandım. Çok iyi gerçekten çok iyi.

  • @silver5003
    @silver5003 4 года назад +2

    Öncelikle temiz bir türkçe ile konuştuğunuz için teşekkür ederim gerçekten bu dönemde çok değerli. Sizi geç farkettiğim için üzgünüm :(

  • @mervenurkoc3271
    @mervenurkoc3271 4 года назад +2

    İlk kez bu kadar net anladım bilgisayar yazılım ilişkisini. İlham oluyorsunuz. Teşekkürler 🙏

  • @tameravci1
    @tameravci1 5 лет назад +1

    Merhaba, gercekten cok guzel anlatmissiniz. Keyifle dinledim. Ben de Amazon Go takiminda Software Engineer olarak calisiyorum- gectigimiz sene Mehul azad sayesinde kisa bir tanisma firsatim olmustu sizinle. Bu kanali bulmak guzel bir surpriz oldu.

  •  7 лет назад +3

    İzlediğim an bende uyanan hislerden bahsetmek istiyorum.
    İlkin gurur duydum. Bu seviyede donanım mimarisi bilen bir kişi görmek gerçek bir gurur kaynağı oldu
    İkinci olarak kıskandım. Yazılımcı olunca donanım mimarisinin ikinci plana atan güruhtan olduğum için bu bilgi seviyesi imrendirdi.
    Son olarak ta keşke beraber çalışabilsek dedim. Keşke en basitinden bir raspberry pi üretebilsek de bizde bu seviyede donanım + yazılım bilgisine erişebilesek dedim.
    Çok teşekkür ederim bu bilgileri bizimle paylaştığınız için

    • @abdurrahmanuslu4765
      @abdurrahmanuslu4765 5 лет назад

      Bir yazılımcının donanıma hakim olması ile raspberry pi üretmenin ne alaksı var.

  • @y01cu_yt
    @y01cu_yt Год назад

    Bilgem hocam, ne kadar da güzel bir anlatımınız var öyle. Videolarınızı teker, teker, tekrar tekrar izledim, izliyorum. Emeğinize sağlık. Mevcut işinizde de muvaffakiyetler diliyorum.

  • @engincangocer9962
    @engincangocer9962 Год назад

    Yaptığınız içeriklerden çokca faydalanıyorum,çok sağolun :)

  • @nefdulin7988
    @nefdulin7988 7 лет назад +1

    Hocam diger videonun altina yazdigim gibi bu konular hakkinda kaynak tavsiyelerinizi merakla bekliyoruz.

  • @demirel16
    @demirel16 7 лет назад

    Ço kaliteli videolar yapıyorsunuz. Teşekkürler., başarılar

  • @talhaabus
    @talhaabus 7 месяцев назад

    Bilgem bey merhaba, videonuza altyazı çıkartıp bu altyazı ile yapay zekanın kısa bir özet çıkartmasını istedim (Deneme amaçlı). Çıktıyı paylaşıyorum:
    1. Sayfa: Donanımın Yazılım Üzerindeki Etkisi
    - Yazılımın performansı, donanımın nasıl çalıştığını anlamakla doğrudan ilişkilidir. Bellek erişimi, CPU kullanımı ve algoritma optimizasyonu, yazılımın performansını etkileyen ana faktörlerdendir.
    - Bellek erişim patternleri ve CPU keşifleri, yazılımın performansını optimize etmek için kritik öneme sahiptir. Ancak, modern programlama dilleri bu konulardaki bilgi eksikliğini gizlemekte ve otomatik bellek yönetimi sunmaktadır.
    - Big O analizi, algoritma performansını değerlendirmede önemli bir araçtır. Ancak, bellek ve CPU optimizasyonu gibi konular da aynı derecede önemlidir.
    2. Sayfa: Soyutlamanın Önemi ve Dezavantajları
    - Soyutlama, kodun daha anlaşılır ve yönetilebilir olmasını sağlar. Bu, kodun belirli bir bölümünü soyutlayarak, bu bölümün detaylarından bağımsız olarak çalışmasını sağlar.
    - Soyutlama, problemi daha küçük parçalara bölerek çözüm sürecini kolaylaştırır. Ancak, soyutlamanın da bazı dezavantajları vardır.
    - Soyutlama kontratlarının doğru bir şekilde tanımlanmaması, hatalara yol açabilir. Bu, kodun bir bölümünün diğer bölümlerle nasıl etkileşimde bulunduğunu tanımlayan "kontratlar"ın eksik veya yanlış tanımlanmasıyla ilgilidir.
    3. Sayfa: Donanım Bilgisi, Soyutlama ve Performans
    - Donanım bilgisi, yazılımın nasıl çalıştığını daha iyi anlamak için kritik öneme sahiptir. Bu bilgi, yazılımın performansını optimize etmek için gerekli olan bellek erişim patternleri gibi konularda yardımcı olabilir.
    - İyi bir soyutlama yeteneği, yazılım geliştiricisinin farklı seviyelerdeki detaylara odaklanabilmesini sağlar. Bu, yazılımın daha etkili ve verimli bir şekilde çalışmasına olanak tanır.
    - Yazılımın sadece teorik bir kavram olmadığını, fiziksel donanımda çalıştığını unutmamak gerekir. Bu, yazılımın performansını etkileyen birçok faktörün donanımla doğrudan ilişkili olduğu anlamına gelir.

  • @sonersivri
    @sonersivri 7 лет назад

    Bugünlerde aklıma takılan sorulara cevap veren bir video Teşekkürler

  • @MrCarburettor
    @MrCarburettor 3 года назад

    Abi tam dosendim yazıyordum "false sharing" ve önbellek optimazyonu BigO yu camdan dışarı atmiyor diye, 17:45 deki açıklamayla yine seninle 100% hemfikir oldum.
    Harika paylaşımlar!! Çok teşekkürler!!

  • @huseyin3741
    @huseyin3741 6 лет назад

    Güzel anlatmışsınız gerçekten. Birçok hocanın geveleyip anlatamadığı önemli noktalar.

  • @angelist2166
    @angelist2166 6 лет назад +4

    Assembly, C ve C++ ile haşır neşir oldum, gömülü sistemlerle de uğraştım ama hiç bir zaman donanım hakkında bu kadar detaylı bilgi sahibi olmadım. Matematik konusunda benim gibi düşünen başkalarıyla karşılaşmak beni çok mutlu etti. Daha iyi bir optimizasyon için Cache'nin bu kadar önemli olduğunu bilmiyordum. Oldukça aydınlatıcı bir video oldu. Çok teşekkürler. Son olarak, ben de bir gün daha verimli programlar yazmak için o birden fazla çekirdekten yararlanmayı düşünüyorum. Parallel computing veya multithreading için çekirdeklerden yararlanmayı öğrenebilirim bir ara. Tekrar teşekkürler bu sürükleyici konuşmanız için. Videolarınızı keyifletakip ediyorum :)

    • @entegreentegre7219
      @entegreentegre7219 5 лет назад +1

      eski bilgisayarlarda cacheleri kapatabiliyordun. ölü gibi çalışıyordu o zaman bilgisayar. cache lerin çok büyük önemi var cpu larda.

    • @muhammedyasinhanyasar539
      @muhammedyasinhanyasar539 3 года назад

      Ben de bu video ile bir tık aydınlanma yaşadım, multithreating konusunda ilerlediniz mi? 3 yıl geçmiş.

  • @ahmetselcuk1400
    @ahmetselcuk1400 2 года назад

    Abi hakkın ödenmez sen konuş kurban olunur sana 👌✊❤❤

  • @semihyldz3261
    @semihyldz3261 7 лет назад

    Videolar için çok sağolun

  • @SelimAbidin
    @SelimAbidin 7 лет назад +3

    Anlattığı konuyla alakalı olarak, Bob Nystrom'un Game Programming Pattern kitabının Data Locality bölümünü okumanızı tavsiye ediyorum. Çok kısa ve yararlı olacaktır. Hatta elinize almışken hepsini okuyun gitsin.

    • @kaanozdogan2355
      @kaanozdogan2355 4 года назад +2

      hort kitap güzelmiş tavsiye için teşekkürler

  • @istanbuldailytrip368
    @istanbuldailytrip368 7 лет назад +1

    Merhaba hocam harika bi anlatım olmuş ağzınıza sağlık , bu ve daha önceki videolarınızda bir yazılımcıların neleri bilmesi gerektiğini ve neler üzerinde durmamız gerektiğini çok güzel anlamışsınız , birde bir yazılımcı bunları yaparken hayatından ne kadar feragat eder ne kadar vaktini harcar bunun ile ilgili düşüncelerinizi görüşlerinizi merak ediyorum böyle video olursa harika olur teşekkürler.

  • @okannuryuz1484
    @okannuryuz1484 6 лет назад

    Bilgem bey ağzınıza sağlık gene bambaşka bir düşünce tarzı kazandım videonuzdan.
    Benim bi sorum olacak. Asıl işim henüz yazılım değil. Elektrik elektronik mühendisliği öğrencisiyim. Kafamda hibrit devrelerle yapılmış dijital enstrüman veya enstrüman efekt aletleri üretmek var. Bunun için nerelere bakabilirim? Bu yaz c ++ öğrenmeyi hedefliyorum. Onun haricinde audio programming nedir? Nerelerde kullanılır, nasıl başlanabilir gibi soruları kapsayan bir video çekerseniz beni çok mutlu edersiniz 😊
    keyifli, mutlu günler dilerim

  • @PoyrazAlkan
    @PoyrazAlkan 7 лет назад +4

    Hocam .net mimarisi içerisinde oluşturulmuş kurallar bizim bahsettiğiniz seviyelere ulaşmamızı engelliyor.. ben kendimi büyük veri ve yapay zeka konusnda geliştirmek isteyen birisi olarak algoritma ve performans konusunda optimizasyon anlamında daha iyi hale gelmem gerekitiğini düşünüyorum verdiğiniz bilgiler çok kıymetli teşekkür ederim

    • @sametoz8913
      @sametoz8913 7 лет назад +1

      ben de .net platformu üzerinde ilerliyorum fakat donanım seviyesine inememek benim de canımı sıkıyor. bir nevi microsoft bize bir kum havuzu vermiş, biz de kazma kürekle oynayıp duruyoruz...
      bu anlayıştan bir an önce dönmek istiyorum, fakat nasıl ilerlemem gerektiğini bilmiyorum. yardımcı olan birisi çıkar belki...

    • @ozkanb
      @ozkanb 7 лет назад +1

      Poyraz Alkan yalinkod videosunda bahsetmiş, .net yerine basit C kodu yaz, bunlari assembly ye cevirip assembly'de nasil bir hal alıyor onu incele. Bunlari anlatirkende hangi amacla low level programming yapmak istiyorsunuz bunuda kendime soruyorum açıkçası

    • @PoyrazAlkan
      @PoyrazAlkan 7 лет назад +1

      low level programing yapmayı sistem programcılığı ve big data analizi alanında yeni toollar geliştirmek için kullanmak ve c nin c++ ın gücünden yararlanıp platform bağımsız yapılar kurmak için öğrenmek çabasındayım. Tabi ki temel olarak c++ ve c biliyorum fakat benim öğrenmek istediğim nokta, gelişmiş kütüphaneler. Form uygulamaları ve network protokolleri katmanını yönetecek kütüphaneler. Alışmaya başladım. derslere devam ediyorum .

  • @muratdndr
    @muratdndr 6 лет назад +3

    Adam biliyo... Yalnız; bir insanın bu kadar alt yapısı olduğu halde nasıl bu kadar mütevazı olabilir?

    • @y01cu_yt
      @y01cu_yt Год назад

      @@mh-ht1ng Ne güzel ifade etmişsiniz.

  • @mustafaakifyucel1329
    @mustafaakifyucel1329 7 лет назад

    Teşekkürler.

  • @fatihapaydn7404
    @fatihapaydn7404 7 лет назад

    Muhteşem

  • @fatihertugral9112
    @fatihertugral9112 5 лет назад

    Mükemmel

  • @halukcetinoglu9144
    @halukcetinoglu9144 7 месяцев назад

    #777 lean structural abstraction runs on phiysical realities which are a variety of abstraction wthout some certain constraints...

  • @nuridincersaygili
    @nuridincersaygili 7 лет назад

    Konulari ogrenme hakkinda biraz daha detayli bilgi verebilir misiniz? Yazilim gelistirici olarak, donanim hakkinda bilgi sahibi olmak icin cesitli kaynaklardan okumak arastirmak yeterli mi? Bu konuda biraz daha tavsiye verebilir misiniz?
    Tesekkurler

  • @ArdaKaraduman
    @ArdaKaraduman 7 лет назад

    Bu arada videolar çok güzel Bilgem, devamı bekliyoruz. Herkes öve öve bitirememiş (aksi düşünülemezdi zaten) ben biraz şeytanın avukatlığını yapayım dedim :)

  • @entegreentegre7219
    @entegreentegre7219 5 лет назад

    intel işlemcilerinin pipeline lardan komutlar işlenirken süreci tahmin etme oranının %95 olduğunu söylüyorlar. Yanlış tahminde işlemleri geri alma cycle süresinin uzun olması. Siz bu konu hakkında ne düşünüyorsunuz?

  • @Nhmek
    @Nhmek 7 лет назад

    .Net üzerinde geliştirme yapan arkadaşlar framework ün getirdiği handicaptan bahsetmişler.Haklılar.Fakat, olaya framework bazlı değil de codebase olarak bakar isek c#'ta hala güzel özellikler var.Bunlar PInvoke,unsafe code ve işaretçileri.Evet bi c++ değil sizi yeterli bir low level seviyesine taşımıyor ama unmanaged kütüphanelere,kod satırlarına erişim imkanı sunuyor.
    Ayrıca, derleyici dilinden kopmamak amaçlı güzel pluginler var.Mesela ILDASM (IL Disassembler),generate edilen kodu disassemble ederek üretilen assembly dilini görmenize olanak sağlar.Bunu öğrenmeye çalışmak sizi "Ne oluyor arkada acaba?" sorusundan bir nebze olsun uzaklaştırabilir ve soyutlaştırdığınız objelerin aslında derleyici dünyasında nasıl konumlandığını anlayabilirsiniz - anlamaya çalışabilirsiniz- .
    Bu arada videonuz çok bilgilendiriciydi,videolarınızın devamını bekliyorum,uğraşınızın değerli olduğunu düşünüyorum.

    • @drozcan
      @drozcan 6 лет назад +2

      Derleyici dilinden kopmamak için ILDASM şart değil, her türlü uygulamada cheat engine, ollydbg gibi debugger işlevi olan yazılımlar kullanılabilir. Fakat .net uygulamalarının bir dezavantajı ise .net modüllerinin yazılan kodu birebir görebilmemize olanak sağlaması, yani ILSpy gibi programlar yardımıyla yazılan kodu tamamen görebiliyor hatta düzenleyebiliyorsunuz. Şu anda kırılamayan bir .net obfuscator yok, dolayısıyla bu kapalı kaynak kod yazmak isteyen birisi için büyük dezavantaj.

  • @postalci95
    @postalci95 4 года назад +1

    27:48'de bahsedilen egzersizi çevrimiçi olarak yapmanızı sağlayan ve bir sürü derleyici seçeneği sunan Compiler Explorer adında bir platform mevcut: godbolt.org/

  • @herturluhalikilimtravel
    @herturluhalikilimtravel 7 лет назад +2

    Çok önemli bir konuya değinmişsiniz, teşekkürler.
    Soyutlama önemli olduğu kadar bir o kadar da maliyetli. Konu ile alakalı bir yazıyı paylaşmak isterim:
    www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction

  • @ArdaKaraduman
    @ArdaKaraduman 7 лет назад +1

    'Çoğu zaman bir bakıyorsunuz ki, doğru indikatör Big O değil'
    Buna katılmam mümkün değil. Öncelikle Big O bir indikatör değil, bir notasyon. Ve sadece Zaman boyutu ifade etmekte kullanılmıyor, Uzay boyutunu da ifade edebilirsiniz (bu genelde yapılan bir hata). Verdiğin örnekte, time & space complexity trade off'u yanlış yapılmış bir çözüm gibi duruyor. Big O bir soyutlama değil.
    en.wikipedia.org/wiki/Space%E2%80%93time_tradeoff

    • @aproyazilimas7904
      @aproyazilimas7904 6 лет назад

      İyi günler, yaptığınız yorumu araştırdığım halde anlamadım. Rica etsem daha açık anlatabilir misiniz

  • @emremer2
    @emremer2 5 лет назад +1

    Üstad, STADIA hakkındaki fikirlerini çok merak ediyorum. ruclips.net/video/nUih5C5rOrA/видео.html
    Geliştiriciler için donanım limitlerini, oyuncular pc ve oyun konsolu limitlerinin kalkabilecek olması müthiş bir gelişme.
    Chrome'da RUclips açmış, oyun oynayanları izlerken, herhangi bir donanıma ve yazılım install etmeye gerek kalmadan hoop diye izlediğim videodaki oyuna katılabilecek olmak çok heyecan verici.. Senin konu hakkındaki yorumların için bi video yapabilir misin..

  • @dotnetturkiye5581
    @dotnetturkiye5581 6 лет назад

    konuk alırsanız çok daha ilgi çekici olur

  • @onurketenci6777
    @onurketenci6777 7 лет назад +2

    ulan 30 dk yapmişsin kim izlicek bunu şimdi hee hoca dedii burdann cikicakk sinavdaa nasil izlimm bunu şimdi ben