Şimdi Ara

Java'da Kütüphane Kullanmamak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
23
Cevap
1
Favori
538
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Princeton Üniversitesi'nden algoritma dersi alıyorum Coursera üzerinden. Kendi stack ve queue kodlarımızı sıfırdan yazdık ve dersin sonunda Java'nın java.util.LinkedList kütüphanesini kullanmamasını söyledi. Sebebi de kötü tasarımdan ötürü düşük performans imiş. Hatta kullandığınız tüm hazır kütüphanelerin API'nı inceleyip algoritmayı anlayın ve öyle kullanın diyor. Kısaca ezbere kullanmayın demiş. Şaşırdım biraz çünkü herkesin hazır kütüphaneler kullandığını düşünüyordum. Sektörde de böyle mi? Java'da Kütüphane Kullanmamak 




  • sende deseydin ki madem kötü tasarlanmış daha iyisini yapın da onu kullanalımJava'da Kütüphane Kullanmamak 




    < Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 9 Haziran 2021; 21:25:59 >
  • hocam hazırı kullanın da ne olduğunu bilmeden import be usta import diye basmayın demiş. içeriğini bilin diyor

    < Bu ileti iOS uygulamasından atıldı >
  • Java'daki (veya başka herhangi bir dildeki) linked list yapısı sadece bazı durumlarda kullanılır. Tam olarak hangi durumlarda kullanılacağını anlatan dokumanlar var, su anda ayrıntısı aklımda değil. Nitekim orada da algoritmayı anlayın ve (linked list'i) öyle kullanın demiş.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • merhaba,


    butun programa dillerinde gelistirme ortami ile beraber gelen ya da 3 parti kutuphaneler her kosul/ihtiyac icin optimize degildir, olmasi da mumkun degildir zaten.


    birisi "düşük performans" diyorsa hangi kosullarda, hangi islemin ( ekleme, cikartma, bulma ) dusuk oldugunu da belirtmelidir ki ihtiyaca gore uygun veri yapisi kullanilsin yoksa da ihtiyaca gore yazilsin. kaldi ki java uzun zamandan beri acik kaynak, eger performansi dusukse ( yine tekrar ediyorum kime gore, neye gore ) bir babayigit cikip uygun algoritmaya gore implementasyon yazabilir, bunun onunde engel yok.

    3 parti kullanimi ise yine yaygin, misal java'nin date, datetime kutuphanesi eskiden cok kotuydu herkes onun yerine joda time kullanirdi.


    diger bir ihtimalde sizin meseleyi yanlis olabilme ihtimaliniz. java da list icin zibilyon tane farkli implementasyon var. bu implementasyonlar da farkli ihtiyaclar icin kullanilabilir. misal linkedlist'te get fonksiyonu o(n) calisit, arraylist o(1). bir ihtimal size "her list ihtiyaci icin linkedlist kullanma, ihtiyacin olan list implementasyonunu kullan" demis olabilir mi?





  • bestanealtcizgi B kullanıcısına yanıt

    Hocam şöyle içerik tam olarak:



    Java'da Kütüphane Kullanmamak


    Java'da Kütüphane Kullanmamak


    "Java has general API for sequences of items and its got things like a, append at the end, remove from the beginning, and so forth. Any uses of the resizing array, so many of the principles that we consider does also a, a link list interface. So, why not just use those? Why use our own implementations? Well, the problem is often in such library code is kind of designed by committee phenomenon that more and more operations get added and the API becomes too broad or bloated. It's not a good idea to have lots and lots of, you know, operations in the same API. And we'll see example in a second. The problem, the real problem is that when you do that you can't know much about the performance or you can't assume much about the performance. And so you can kind of immediately arrive at that performance even for simple clients. So our best practice that we recommend is so few that these basic data structures that we use and there's so simple is to go ahead and use the implementations that we've just discussed for these fundamental data structures. Maybe later, later on, after an experienced programmer who knows what he or she is doing could use some of these library collections effectively. But inexperienced programmers often have trouble with it. Here's a war story from students Programming assignments not that long ago. So, we have an assignment where you need to generate a random open sites in a percolation system. We have one student who was paying attention to what we're saying and uses an array and can pick the indices into that array at random check whether they're open and, and repeat. And so the array is N by N, it's N^2 things and it takes about N^2 time, which is actually a linear time for this application. But then we have another student who had some Java before coming to us and considered himself an expert and said, well, I'm going to use linked list because I could use Java's library and I don't have to worry about downloading your stupid code. And so, I'll just use that one and pick an index at random and delete and that program took quadratic time and poor Kenny, when trying to run his program for the huge instance that we asked found out that it wasn't finishing. And the reason is that the Java linked list implementation takes a linear time to find an item with a given index. Not constant time like an array. And that's difficult for Kenny to think about and difficult to drive that information from the implementation so program is just too slow. And with the Swiss knife implementation with so many operations it's hard to know whether or not the particular set of operations that your client needs is efficiently implemented. So our insistence in this course is that students should not use the library until we've implemented it in class. At least that some indication that you understand the performance characteristics. "




    < Bu mesaj bu kişi tarafından değiştirildi scientia -- 10 Haziran 2021; 13:57:41 >




  • scientia kullanıcısına yanıt

    " Computer science, data structures eğitimi almadan programlamaya dalarsanız işte Kenny gibi salak olursunuz, o nedenle şimdi bu kursu kapatın ve adam gibi bir bölüme girin" deseymiş tüm olay çözülürdü.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • seyfi84 S kullanıcısına yanıt

    Hocam BM öğrencisiyim zaten ama birinci sınıf. Bir de bu kurs giriş seviyesinde data structures/algorithms anlatıyor. Prerequisite olarak da hiçbir şey istemedi.




    < Bu mesaj bu kişi tarafından değiştirildi scientia -- 10 Haziran 2021; 15:57:29 >
  • Hocam, az çok programlama yarışmalarına katılmış, "büyük usta"ların kodlarını kurcalamış birisi olarak, kimse bir veri yapısını sıfırdan yazmıyor. Tabi o yarışmalarda hız durumu da var, bir de graph vs. gibi algoritmalar söz konusu ise tabi ki adjacency listleri filan kendin oluşturuyorsun, ya da segment tree tarzı yapıları kendin yarışma esnasında yazıyorsun. ama set, multiset, priority queue, queue, stack vs. standart yapılar sıfırdan yazılmıyor. Burada sanırım "Arka planın nasıl olduğunu bilin, sonra hazır kullanırsanız da olur" diye ezberci olmamak için kendiniz yazın demişler.

  • yesil1026 Y kullanıcısına yanıt

    Teşekkürler.

  • quote:

    Orijinalden alıntı: scientia

    Hocam şöyle içerik tam olarak:





    "Java has general API for sequences of items and its got things like a, append at the end, remove from the beginning, and so forth. Any uses of the resizing array, so many of the principles that we consider does also a, a link list interface. So, why not just use those? Why use our own implementations? Well, the problem is often in such library code is kind of designed by committee phenomenon that more and more operations get added and the API becomes too broad or bloated. It's not a good idea to have lots and lots of, you know, operations in the same API. And we'll see example in a second. The problem, the real problem is that when you do that you can't know much about the performance or you can't assume much about the performance. And so you can kind of immediately arrive at that performance even for simple clients. So our best practice that we recommend is so few that these basic data structures that we use and there's so simple is to go ahead and use the implementations that we've just discussed for these fundamental data structures. Maybe later, later on, after an experienced programmer who knows what he or she is doing could use some of these library collections effectively. But inexperienced programmers often have trouble with it. Here's a war story from students Programming assignments not that long ago. So, we have an assignment where you need to generate a random open sites in a percolation system. We have one student who was paying attention to what we're saying and uses an array and can pick the indices into that array at random check whether they're open and, and repeat. And so the array is N by N, it's N^2 things and it takes about N^2 time, which is actually a linear time for this application. But then we have another student who had some Java before coming to us and considered himself an expert and said, well, I'm going to use linked list because I could use Java's library and I don't have to worry about downloading your stupid code. And so, I'll just use that one and pick an index at random and delete and that program took quadratic time and poor Kenny, when trying to run his program for the huge instance that we asked found out that it wasn't finishing. And the reason is that the Java linked list implementation takes a linear time to find an item with a given index. Not constant time like an array. And that's difficult for Kenny to think about and difficult to drive that information from the implementation so program is just too slow. And with the Swiss knife implementation with so many operations it's hard to know whether or not the particular set of operations that your client needs is efficiently implemented. So our insistence in this course is that students should not use the library until we've implemented it in class. At least that some indication that you understand the performance characteristics. "

    siz alinti yaptiginiz kismi okuyup dogru anladiginiza emin misiniz?


    ilk mesajimda da anlatmaya calistim, ihtiyac dogurultusunda kullanilabilecek bir suru uygun implementasyon var ( api, interface, implementation gibi kavramlari bildiginizi varsayiyorum ) ihtiyaciniza uygun olmayan veri yapisini kullanmanin sonuclarindan bahsetmis alinti yaptiginiz yazida da.


    yine yazida bir genel cozum kullanmaktansa ihtiyaca uygun cozumu/veri yapisini kullanilmasi tavsiye edilmis bu da muhendisligin temeli zaten. ihtiyaca uygun optimal cozum uretmek.


    Cok kullanilan veri yapilarinin nasil calisildiginin ogrenilmesi dogru kullanilmasi icin faydalidir. Bu yuzden sinavlarda, is gorusmelerinde ogrencilerin/adaylarin mevcut implementasyonlari kullanmayip kendi implementasyonlarini yazmasi cok dogal bir istek. mesela cok kullanilan list implementasyonlari icin tablolar var internette, operasyon performanslarini gosteren bunlara bakip secim yapmak da mumkun ama nasil calistigini bilirseniz eger ihtiyaca gore uygun kendi implementasyonunuzu yazmaniz da tekerlergi yeniden kesfetmediginiz icin dogal olarak daha kolay olacaktir.


    data/structures & algorithm zaten yazilim muhendisliginin temeli, bu temel olmadan devam edildiginde uygun muhendislik cozumlerini yaratmak mumkun olmayacaktir.





  • bestanealtcizgi B kullanıcısına yanıt

    Cevap için teşekkürler. İhtiyaç kısmından ziyade direkt kendi implementasyonumuzu kullanmamızı önerdi dersi anlatan. Tüm kısmı okudunuz mu bilmiyorum ama bizim kendi yazdığım kısımda constant time ile array taranırken Java'nın kütüphanesi ise lineer şekilde tarıyormuş. Verdiği örnekte de eğer biz bu farkı bilmesek ve Java'nın kütüphanesine gözü kapalı güvenirsek performansta kayıp yaşar işin kötüsü de kök nedeni bir türlü bulamazmışız. Benim özetle anladığım bu oldu.


    Merak ettiğim ise best pratices konusunda daha çok. Çünkü akademi ile pratik dünya farklı olabiliyor. Mesela diyelim ki Netflix'te çalışan bir developer Java ile çözüm geliştirecek. Eline Java API alıp oradaki metotları kullanıp işini mi görüyor yoksa API üzerinden bildiğiniz sıfırdan bir time ve memory analizi yapıp eleme mi yapıyor? O developer ben şu noktada kendi çözümümü geliştirdim çünkü daha az memory kullanıyor mu diyor takım toplantılarında?


    Özetle sizin söylediğiniz mantıklı. Göze batacak şekilde düşük performanslı bir metot varsa zaten dünya alem duyar herhalde. Biri de workaround geliştirebilir en azından. Benim gözümü korkutan şu oldu: Diyelim ki Android developer olacağım. Kafamdaki imaj az çok, API üzerinden tarama yapıp ihtiyacıma göre çözümleri bulup ilerlemek. Ama anladığım kadarıyla sadece API bilmek değil, nasıl çalıştığını da bilmem gerekecek.


    Neyse ben biraz daha ders çalışayım. Java'da Kütüphane Kullanmamak  Daha fazla rezil etmemeyim kendimi. Üç dört sene sonra seviyenize yetişirim umarım.





  • Hocanız bir şeyler öğrenmenizi istemiş.

  • quote:

    Orijinalden alıntı: scientia

    Cevap için teşekkürler. İhtiyaç kısmından ziyade direkt kendi implementasyonumuzu kullanmamızı önerdi dersi anlatan. Tüm kısmı okudunuz mu bilmiyorum ama bizim kendi yazdığım kısımda constant time ile array taranırken Java'nın kütüphanesi ise lineer şekilde tarıyormuş. Verdiği örnekte de eğer biz bu farkı bilmesek ve Java'nın kütüphanesine gözü kapalı güvenirsek performansta kayıp yaşar işin kötüsü de kök nedeni bir türlü bulamazmışız. Benim özetle anladığım bu oldu.


    Merak ettiğim ise best pratices konusunda daha çok. Çünkü akademi ile pratik dünya farklı olabiliyor. Mesela diyelim ki Netflix'te çalışan bir developer Java ile çözüm geliştirecek. Eline Java API alıp oradaki metotları kullanıp işini mi görüyor yoksa API üzerinden bildiğiniz sıfırdan bir time ve memory analizi yapıp eleme mi yapıyor? O developer ben şu noktada kendi çözümümü geliştirdim çünkü daha az memory kullanıyor mu diyor takım toplantılarında?


    Özetle sizin söylediğiniz mantıklı. Göze batacak şekilde düşük performanslı bir metot varsa zaten dünya alem duyar herhalde. Biri de workaround geliştirebilir en azından. Benim gözümü korkutan şu oldu: Diyelim ki Android developer olacağım. Kafamdaki imaj az çok, API üzerinden tarama yapıp ihtiyacıma göre çözümleri bulup ilerlemek. Ama anladığım kadarıyla sadece API bilmek değil, nasıl çalıştığını da bilmem gerekecek.


    Neyse ben biraz daha ders çalışayım.   Daha fazla rezil etmemeyim kendimi. Üç dört sene sonra seviyenize yetişirim umarım.

    okudum, malesef okudugunuzu anlamamissiniz. yazida array list ile linked list implementasyonlarinin farkli bulma suresinden bahsediliyor. ikisi de standart java kutuphanesi. ilk mesajimda da bunu yazdim zaten size ama siz hala "mis, mus" kaliplari ile bilmediginiz konu uzerinde duyumlariniz ile iddiada bulunuyorsunuz. bilmediginiz, hatta bilmediginizi bilmediginiz sey list implementasyonlarinin farki. tekrar ediyorum, bu implementasyonlarin nasil calistigini, ne icin tasarlandigini bilirseniz kendi ihtiyaciniza ozel veri yapisi implementasyonu yapmak da o kadar kolay ve verimli olur. kaldi ki java lego gibidir, size hazir onlarca list implementasyonu sunar ama bunlarin sizin ihtiyacinizi %100 verimli olarak karsilayacagini garanti etmez ama %100 verimli implementasyonu yazmaniza ve kullanmaniza olanak verir.


    java api'den kastiniz nedir tam olarak? java'da api olarak benim aklima gelen tek sey jdbc. 1-2 sinif ( zaman siniflariydi onlar da sanirm ) tamamen interface'den olusur her db vendor da kendi driverini ( implementasyon ) yazar bunun uzerine. jsr'lari mi kastediyorsunuz java api olarak, tam olarak nedir anlayamadim.

    eger java api'den kastettiginiz standart java kutuphanesi ise ihtiyac dogurultusunda kullanilir ya da ihtiyaca gore gelistirilir ya da yenisi yazilir. api uzerinden time ve memory analizi yapmak ne demektir onu da bilmiyorum.

    netflix uzerinden gidersek misal opensource olarak yayinladiklari hystrix var. Kendi is modelleri sistemlerinin hata toleransli olmasi, hata/gecikme durumlarinda alternatif akislara gecmeleri gerekiyor mevcut standart java kutuphanesi de bunun gibi ozel bir durum icin cozum sunmuyor. adamlar da oturup hystrix'i yaziyor yine java ile ardindan bunu opensource ile aciyorlar, benzeri ihtiyaci olan herkes kullaniyor.

    toplantilarda boyle seyler konusulmaz ilk basta. genelde projeyi gelistirmeye baslamadan once ihtiyaciniz dogrultusunda mimari tasarim ve teknik cozumlemesini yaparsiniz. bu asamada kullandiginiz platformun sizin ihtiyaclarinizi karsilamayacagini ongorurseniz ihtiyaca uygun araclari yazmayi planlarsaniz, bu araclarin detaylari da yine kendi icinde cozumlenir. performans problemlerinin belki de %90'i urunun mimarisi ve kodlamasi bittikten sonra kabul ( acceptance ) ya da canli ( production ) ortamlarda monitoring/profiling sonucu ortaya cikar ve belaya sebep olur. o asamadan sonra problemin sebebini bulmak, cozum uretmek vs. genelde ekibin ortak calismasi ya da ilgili kisim ( performans, jvm vs. ) uzerindeki uzman arkadaslarin calismasi ile cozulur.

    sizin alinti yaptiginiz yazida ornek verilen yanlis list implementasyonu kullanimi ise genelde codereview'dan doner bu isin ciddi yapildigi yerlerde. bir developer cikip "ben kendi cozumumu gelistirdim" derse ona buyuk ihtimalle "kendi cozumunu gelistirmeni kim, niye istedi senden?" diye sorarlar.


    diger yandan bu tarz ozel kutuphaneleri yazmak verimli olmayabilir. vakti zamaninda turkiye'de gsm operatorlerinden birisinde calisirken arkadaslarin java icin kendi serializer kutuphanesini yazdiklarini gormustum. sebebi de performansti, kazanclari ise %1'in altindaydi. bu %1'lik marjinal kazanc icin harcadiklari insan kaynagi belki de maliyetinin cok daha azi ile donanim kaynagi artirilarak cozulebilirdi. muhendislik optimal cozumu sunarken farkli yonetemleri de goz onune almak demektir. "Premature optimization is the root of all evil" sozu her yazilimcinin gorebilecegi yere neon harflerle yazilmalidir is yerinde.


    goze batacak sekilde dusuk performansli metod standart java kutuphanesi icerisinde son zamanlarda ( ozellile opensource olduktan sonra ) yok, amacindan farkli olarak kullanilmis implementasyon vardir buyuk ihtimalle. bunu belki 5. kez yaziyorum belki anlarsiniz umudu ile.

    herhangi bir plaformun developeri iseniz, ihtiyaciniz dogrultusunda platformadan bagimsiz olarak hangi algoritma ve veriyapisini kullanacaginizi bilmeniz gerekli. daha sonra ilgili platformda bunun implementasyonu nedir diye ararsiniz varsa kullanirsiniz, yoksa ihtiyaciniz dogurultusunda yazarsiniz. algoritma ve veri yapilari platform bagimsizdir, yazilim muhendisliginin temelidir.


    estafurullah, kendinizi rezil etmiyorsunuz ogrenmeye calisiyorsunuz bu da gayet normal ama gordurum kadariyla ( yaniliyor olmam, yanlis anlamam mumkun elbette ) kavramlar konusunda hala kafanizda oturmayan seyler var. bunlar zamanla oturacaktir, telasa mahal yok ogrenmeye pratik yapmaya devam edin. Soru sormaktan cekinmeyin.





  • bestanealtcizgi B kullanıcısına yanıt

    Ne anladığımdan eminim. Belki videonun ortasından alıntı yaptığım için yanlış anlaşılma olmuş olabilir. Her şeyi iki tartışmaya döndürmek istemiyorum çünkü başta sizin zamanınıza yazık. Video şurada:


    P.S Stack ve queue için hem array hem de link-list implementasyonlarımızı kendimiz yazdık. Hoca hem array list hem de link-list için kendi yazdığımız ile kütüphanelerdeki implementasyonları kıyaslıyor.





    < Bu mesaj bu kişi tarafından değiştirildi scientia -- 13 Haziran 2021; 20:56:22 >




  • quote:

    Orijinalden alıntı: scientia

    Ne anladığımdan eminim. Belki videonun ortasından alıntı yaptığım için yanlış anlaşılma olmuş olabilir. Her şeyi iki tartışmaya döndürmek istemiyorum çünkü başta sizin zamanınıza yazık. Video şurada:


    P.S Stack ve queue için hem array hem de link-list implementasyonlarımızı kendimiz yazdık. Hoca hem array list hem de link-list için kendi yazdığımız ile kütüphanelerdeki implementasyonları kıyaslıyor.


    son kez, okudugunuzu anlayabileceginizi umut ederek cevap aciklamaya calisayim.


    dersi anlatan abinin dedigi su, siz de alintilamissiniz


    Alıntı

    metni:
    Well, the problem is often in such library code is kind of designed by committee phenomenon that more and more operations get added and the API becomes too broad or bloated. It's not a good idea to have lots and lots of, you know, operations in the same API. And we'll see example in a second. The problem, the real problem is that when you do that you can't know much about the performance or you can't assume much about the performance. And so you can kind of immediately arrive at that performance even for simple clients


    sizin ilk mesajinizda yazdiginiz ise su


    Alıntı

    metni:
    Kendi stack ve queue kodlarımızı sıfırdan yazdık ve dersin sonunda Java'nın java.util.LinkedList kütüphanesini kullanmamasını söyledi. Sebebi de kötü tasarımdan ötürü düşük performans imiş.


    oncelikle soylenilenden bunu anladiysaniz, ingilizce uzerine biraz daga fazla yogunlasmak sizin icin daha iyi olabilir.


    son kez anlamaniz umudu ile tekrar edeyim, java da bir interface/veri yapisi icin birden fazla implementasyon hali hazirda vardir. eger bunlar isinizi goruyorsa alip kullanirsiniz eger isinizi gormuyorsa ihtiyaciniz dogrultusunda oturup kendi implementasyonunuzu yazarsiniz ve kullanirsiniz. yine arkadaslar soylemis ama ben de tekrar edersem belki anlarsiniz, bu kursta amac sizin veri yapilarinin nasil calistigini ogrenmeniz.


    profesyonel hayatta "ben kendi queue implementasyonumu yazicam" derseniz junior halinizle muhtemelen azar isitirsiniz. junior olmayanlar da zaten ihtiyaci dogurultusunda mevcut implementasyonlardan dogru olanini secer kullanir ki abi de ayni seyi soylemis.


    Alıntı

    metni:
    So our best practice that we recommend is so few that these basic data structures that we use and there's so simple is to go ahead and use the implementations that we've just discussed for these fundamental data structures. Maybe later, later on, after an experienced programmer who knows what he or she is doing could use some of these library collections effectively.


    alintinin geri kalaninda verdigi ornekse yanlis implementasyon secimi ile alakali.


    diger mesajinizda ise


    Alıntı

    metni:
    Java'nın kütüphanesine gözü kapalı güvenirsek performansta kayıp yaşar işin kötüsü de kök nedeni bir türlü bulamazmışız. Benim özetle anladığım bu oldu.


    yazmissiniz ki bu malesef ki meseleyi dogru anlamadiginizi gosteriyor.





  • Olay İngilizceye döndü.


    "So our best practice that we recommend is so few that these basic data structures that we use and there's so simple is to go ahead and use the implementations that we've just discussed for these fundamental data structures. Maybe later, later on, after an experienced programmer who knows what he or she is doing could use some of these library collections effectively. But inexperienced programmers often have trouble with it."


    Şu alıntındaki bold olan kısmında bahsedilen best practice neye refer ediyor? (inexperienced olan için)


    A: Kendi implementasyonumuz

    B: Library Collection'taki implementasyon


    Ben bu soruya A diyorum. Siz ise B. Adam net bir şekilde A demiş. Java'da Kütüphane Kullanmamak  İngilizcem kötü olsa anlayacağım ama kötü de değil.


    @bestanealtcizgi





  • quote:

    Orijinalden alıntı: scientia

    Olay İngilizceye döndü.


    "So our best practice that we recommend is so few that these basic data structures that we use and there's so simple is to go ahead and use the implementations that we've just discussed for these fundamental data structures. Maybe later, later on, after an experienced programmer who knows what he or she is doing could use some of these library collections effectively. But inexperienced programmers often have trouble with it."


    Şu alıntındaki bold olan kısmında bahsedilen best practice neye refer ediyor? (inexperienced olan için)


    A: Kendi implementasyonumuz

    B: Library Collection'taki implementasyon


    Ben bu soruya A diyorum. Siz ise B. Adam net bir şekilde A demiş.   İngilizcem kötü olsa anlayacağım ama kötü de değil.


    @bestanealtcizgi

    Aynen güzel kardeşim, best practice demiş adam o yüzden konuşmanın başı, sonu, tüm içeriğini dikkate almadan her şeyi baştan yazın siz. Çünkü best practice demiş bi kere. Neyin, hangi koşulun, durum/içeriğin önemi yok best practice dediyse yazın sıfırdan. Video'nun egitim videosu oldugu, veri yapilari ogrenmek icin best practice oldugunun anlami hic yok, evrensel best practice bu.


    İngilizcenizde de sorun yok, on numara beş yıldız o da. Best practice yazısını nerede görürseniz neyin best practice'i olduğuna bakmadan uygulayın, devam böyle.


    Selametle.




    < Bu mesaj bu kişi tarafından değiştirildi bestanealtcizgi -- 14 Haziran 2021; 10:56:50 >
    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Burada bahsedilen konu Java'da hazir kutuphane kullanilmasi veya kullanilmamasi degil. Arayuzun arkasindaki implementasyon detayini bilmeden bir veriyapisi kullanmanin, cok buyuk verileri islerken size surprizler cikarma olasiligindan bahsediyor. Bazi veriyapilari ekleme cikarma konusunda size lineer veya sabit performans sunarken, bazilari erisim veya arama konusunda daha performanslidir. Bazi durumlarda thread-safety onemliyken, bazi durumlarda boyle bir erisimin soz konusu olmayacagini bilirsiniz. Bir veriyapisinin performansinin belli durumlar icin kotu olmasi, her zaman o implementasyonun kotu yazildigi anlamini tasimaz. Boyle bir durumla karsilasiyorsan, yanlis yerde yanlis implementasyonu kullaniyorsun demektir. 96 yilinda piyasaya surulmus bir dilden bahsediyoruz. Uzerinde 25 * X muhendislik yili emek var. Bunun uzerine senin kendi veriyapisi cozumlerini gelistirmeye calisman anlamsiz. 3 gunde yazdigin kodun bunca yildir yazilmis, milyonlarca insan tarafindan test edilip kullanilmis implementasyonlardan daha iyi bir cozum sunacagini dusunmek biraz saflik olur. Su an standart kutuphane ile kod yazdigin icin belki bu soruyu kendine sorabiliyorsun. Fakat ileride Spring/Maven ile bir proje gelistirdiginde, bagimlilik coplugunde(dependency hell) debelenirken Java'nin sana aslinda sadece bir temel sundugunu goreceksin. Muhendislik pragmatik istir. Isini gorecek ne varsa kullanirsin. Bilincsiz bir sekilde her seyi projene katarak corba haline getirmenin marifet olmadigi gibi, bilincli bir sekilde bundan kacinmak da marifet degildir.





  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.