Yazılımcılara sorular ...
4 4

Bu konuda 145 mesaj var

Haberlerden aklıma takılan birkaç soru var. 

 

-Google , Java yerine Swift 'e geçmeyi veya en azından destek vermeyi düşünüyormuş. Ne avantajı var Swift'in?

-Java'yı neden kimse sevmiyor?

-Notepad++ 'ın yaygın olarak kullanıldığı okuyorum. Bunu sadece html gibi markup language için mi kullanıyorlar, yoksa bunla Java uygulaması yazan var mı? Benzer işler için MS Visual Studio Code var ,o tutulmuyor mu?

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Java sevilmiyor diye bir şey yok ama diğer platformlarda çok fazla kaynak var kod yazması çok kolay çoğu zaman ordan burdan kod kopyalayıp kendine göre değiştirip program yapabiliyor insanlar.

 

Notepad ++ 'ın çok ayrı bir yeri var ben bütün yordamlarımı hatta notlarımı orada tutuyorum. 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

yeni başlayanlar için daha kolay gelebielcek bir dil swift bu avantajının yanında ios ve android 2 platforma da aynı dil ile geliştirme yapabilmek büyük bir avantaj olacak. eğer mobil geliştirme ihtiyacınızı 3rd party frameworkler görmüyorsa 2 platform için de ayrı ayrı kod yazma ihtiyacını ortadan kaldıracaktır... javayı kökten kaldırmasını istemem ama native olarak swift de destekliyor olması bir avantaj olacaktır.

Java candır. sevilmeme durumu yok. şu aralar herkes kendini yazılımcı sanıyor. iş görüşmelerinde falan gördüğüm durum bu. adam daha hiçbirşeyden haberi yok. oop mvc falan diyince ürküyor. bu adam java ile tanışınca afallıyor sevmiyor.

notepad++ yıllarca windowsta kullandım. ama ben uzun süredir sublimetext kullanıyorum. her platformda olması büyük bir avantaj.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Java'da kendimi hiç rahat hissetmedim ama saygım sonsuz, sevilmeme gibi bir duruma ben denk gelmedim. Tercih edilmiyor olabilir ticari kaygılarla ama Java yazılım geliştirme biliminin amiral gemisidir. 

 

notepadd++'a ben bir türlü alışamadım, ama zorluyorum kendimi. Notepad2 kullandım uzunca süre ama notepad++ sadece gelişmiş bir notepad uygulaması değil, çok daha ötesi, kesinlikle başarılı.

 

notepad++ veya benzeri uygulamalarda Java/C# vb. derleme gerektiren kodları yazan var mıdır emin değilim. Zira bunların yazılıp bir de ayrıca derleme için uğraşılması lazım. Debug vs. zaten bildiğim kadarıyla mümkün değil. .NET için konuşursak Visual Studio gibi bir efsane varken kimsenin notepad++ kullanacağını sanmıyorum.

 

Bu arada yeri gelmişken yazayım, eğer Microsoft'un en başarılı ürünü hangisidir denirse, birinci sırayı ya Excel alır, ya da Visual Studio diye düşünüyorum.  

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Notepad++ ile ben ufak java kodlarını derliyorum. JDK ayarlarımı yaptım doğrudan npp üzerinden takılıyorum hızlı bir sonuç almak gerektiğinde. 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Ben universiteden sonra 5 seneye yakin Java gelistirdikten sonra 3 sene kadar once Objective-C, ardindan Swift agirlikli calismaya basladim. Bu arada Python, Ruby, JavasScript (node.js) gibi bircok dili buyuk projelerde denedim, cok sey kacirdigimi farkettim. (Ufak tefek hello world'un az buyugu uygulamalardan anlasilmiyor bir dil.)

 

Java'nin zamaninin sonuna geldigini dusunuyorum. Tabii ki kurumsal buyuk sirketler kullanmaya devam edecekler, ama startuplara bakin, Java ile is yapan cok az insan gorursunuz. Surekli gelistirilmeye devam etse de, Java'nin modern ihtiyaclar icin eksik/agir kalmaya basladigini dusunuyorum. Simdinin startuplari tepeye cikmaya baslayinca, Java artik sadece bankalarin kullandigi eski bir dil olacak bence. Genc nesil Java ogrenmek istemiyor, cok daha hizli baslangic yapilabilen, sozdizilimi basit Python, Ruby, Go gibi diller varken.

 

Swift, bircok dilin guzel ozelliklerini toplamak amacli, anlasilir sozdizilimi olan bir dil. Ben ilk versiyonundan itibaren kullaniyorum, surekli buyuk degisiklikler yapiliyor dilde ama kendimi cok rahat hissettigim bir dil oldu. Su ana kadar 5 tane falan iOS uygulamasi yazdim Swift'le. Android'de direkt desteklendigi zaman orada da kullanirim. Objective-C'den sonra isimi cok hizlandirdigini dusunuyorum.

 

Notepad++ gibi text editorler, bazi yazilimcilar tarafindan buyuk IDE'lere tercih ediliyor. Basit "syntax highlighting" ozelligi olan herhangi bir editorle buyuk projeler cikarilabilir, kisiye kalmis. Hatta direkt notepad gibi bir text editorle calismayi seven, bunlarin hic dikkat dagitmadigini iddia eden yazilimcilar az da olsa mevcut. 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Java' yı sevmiyorum ben arkadaş :P .

 

Notepad++ kullanımına şöyle bir örnek verebilirim, benim daha çok kullanımım bu yönde. Küçük kod parçaları (SQL, XML, script vs..., program kodu da olabilir) veya DEV ortamından ayrı uğraşmak istediğim her türlü metni (atıyorum host.etc, her türlü config vs..) düzenlemek için kullanıyorum. Özellikle regex vs.. kullanımı iyi oluyor. Geçenlerde buradan aldığım tavsiye ile başka bir iki uygulama daha indirdim, onlara da bakıyorum arada. Geçen bir küçük bir .hta yazdım, bunun için VS açmaya gerek yok örneğin. Ha, bir de her ortamda veya konumda VS kullanılmıyor, özellikle uzaktan çalışılırken.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Javaya bu kadar yüklenmeyin. Biyoinformatik çalışanlar arasında kullanılan diller genelde Python, perl, ve java. Özellikle benim kullandığım epey bir perl ve python kod var el altında. Ben kendim sıfırdan yazacaksam java ile daha rahat hissediyorum kendimi öyle yapıyorum. 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

java ben vm olduğu için sevmiyorum. bir kodu yazak da her yerde çalışsın diye emülatörden geçirmek iş değil. yani win32 ortamında java binaryleri native değil, vm'den geçecek de çalışacak ölme eşşem ölme! low-level yazılmış amatör(!) işi oyun konsolu veya komodor-amiga emulatörleri bile java uygulamalarından çok daha iyi tepkiler veriyor. şahsen javaya en çok bu yüzden gıcık kapıyorum. icat edeninden yayanına allah belasını versin, oop olacaksa cpp yazıp her platformda ayrı compile etmek çok zor iş sanki de cross-platform uğruna bunca performans kaybına boyun eğdi millet. memleketteki üniler de yalama, amerikadan estirilen ticari rüzgara göre eğilip bükülüyorlar misal java öven hoca görünce de o tipe akademisyen gözüyle bakamıyorum. insan platform ve vendor-independent olur, cpp dururken vendor spesifik işlere, dot.nete javaya civaya ne gerek var mk. piyasa bunu kullanıyormuş diye dot.net öğretir, java öğretir, ulan senin işin bilgeadamlık mı? 

 

notepad'e bir ben alışamadım, yıllardır editplus takılıyorum şahsen. 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Hocam Java ile ilgili bilgileriniz ya yanlis, ya da trolluyorsunuz basligi.

 

Ama ben insanlar yanlis bilgilenmesin diye ciddiye alip cevap verecegim.

 

Java ve .Net platformlarindan haz almam, ama yigidin hakkini vermek lazim. Java ve .Net CLR JIT denilen bir teknik kullanarak uygulamayi diger native uygulamalardan neredeyse farksiz olacak sekilde calistiriyor. Java kodu yazilimci tarafindan bytecode'a derlenir, kullanici calistirirken JIT compiler ile native koda derlenir. (Biraz daha karisik burada, ozet olarak boyle)

Oyle emulatorden geciyormus, yok komodor emulatoru daha hizliymis gibi bir durum yok. Java C++'a yakin performans verebilen (hatta bazen gecebilen) bir platform. 

 

Okulun olayi dil ogretmek degildir, algoritma ve programlama mantigini ogretmektir. Tabii ki populer platformlar ogretilecek. Farkli diller ogrenmek kisinin sorumlulugudur. 

analog beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

@@kronus

Java C++'a yakin performans verebilen (hatta bazen gecebilen) bir platform. 

 

 

Buna katılmıyorum ama ayrıca tartışırız :)

 

(Alıntı çuvalladı, uyuz ediyor bazen)

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

@@OnLyTNT

 

Burada guzel bir tartisma ve aciklamalari var:

http://programmers.stackexchange.com/questions/110634/why-would-it-ever-be-possible-for-java-to-be-faster-than-c

 

(Ozetle, anahtar kelime : JIT compiler)

 

JVM, teknik acidan cok ustun bir platform. Ben sahsen dil sozdizimini sevmiyorum. 3-4 senedir de Android disinda kullanmadim (ki standart JVM degil Android'deki.).

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Düzgün yazılmış bir kod genel itibariyle bir çok platformda benzer hızlarda çalışabilir istisnalar olmak kaydıyla. Ancak Java ve .NET in bir tür JIT veya VM ye ihtiyaç duyması onları herhangi bir native dile karşı kesinlikle "inferior" yapmaz. 

 

Piyasada şu an kullanılan bir çok yazılıma bakın. Gidişata bakın vs. Javascript ve benzeri scripting languagelar ile uygulama yazar oldu insanlar bu diller kötü diller değil. Sadece son kullanıcıya hitap eden sistemler artık JIT ve VM e ihtiyaç duyan platform neutral takılması gereken uygulamalardan oluşuyor. 

 

Hardcore C ve hatta Asm ile oturup ios app yazamayacaksınız veya android app yazamayacaksınız. Benzer şekilde bir web uygulamasını da Asm ile yazamayacaksınız. Server tabanlı bir uygulama için hala Java Python ve Perl kullanan yazılımcılar mevcut.

 

Kullandığım iş bilgisayarı ve ev bilgisayarımda IIS üzerinde çalışan bir Perl application mevcut. Kalkıp da meh perl bu bunu C ile yazmalıyım diye debelenmenin veya perl ile yazılmış kullanmayayım demenin manası yok. Şahsen script diller bana daha esnek geliyor biyoinformatik için çünkü gerekirse bir editör ile hemen müdahale edip değiştirebiliyorum. Binarycode ile uğraşmama ne gerek var her seferinde nasılsa istediğim iş yapılıyor. Hatta bir uygulama script dil ile yazıldıysa öpüp başımın üzerine koyuyorum çünkü hızlı bir biçimde alıp el altında tuttuğum isviçre çakısı debian VM ye atıp hemen uygulamayı kullanmaya geçebiliyorum. Binary olsa kaynak uygun mu dependency var mı yok mu pöff ki ne pöfff.. cmake in bana saç baş yoldurduğu çok oldu dandiri çözülmeyen dependencyler nedeniyle. Kullandığım en önemli yazılımlardan bir tanesi Galaxy Server. https://usegalaxy.org/ Bu yazılım python webserver üzerine kurulu ne apache ne başka bişi kullanıyor. Doğrudan python webserver ile hazırlanmış çok güzel bir biyoinformatik analiz ortamı. Bir sürü modül elle veya repolar üzerinden otomatik eklenebiliyor. Bunu web üzerinden kullanmak yerinde yine bir isviçre çakısı debian VM üzerine çaktım 16gb ram ve 4 thread ile. Virtualbox ile headless çalıştırdığım VM bana çok güzel NGS assemblyler veriyor açıkçası. İyi ki python ile yazılmış. Kendim oturup modül yazabiliyorum rahatlıkla. 

 

Olay hangi dili kullandığınızdan ziyade kodu verimli yazıp yazmadığınız algoritmayı doğru oluşturup oluşturmadığınıza bakar. Java Applet ortamında web animasyon ortamında öldü ama Java hala bir çok enterprise sistemin kökünde kazınmayacak şekilde yerleşik duruyor ve biryere gitmeye de niyeti yok. O nedenle çok zorlamasın bence kimse "java hate" ile. 

 

Dipnot. Steamden oyun yüklerken kaç kere Runtime library yüklendi yeniden sisteminize bir düşünün native severler. 

 

Dipnot2: Virtualization != Emulation. (http://www.computerworld.com/article/2551154/virtualization/emulation-or-virtualization-.html)

 

Dipnot3: Virtualization layer kullanan yazılımlar on metal çalışanlara göre daha güvenli. Neden mi? Pre-.NET dönemlerinde çöken bir yazılım sistemin tamamını neden kilitliyordu diye bir araştırın yeter. 

kronus beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

@@OnLyTNT

 

Burada guzel bir tartisma ve aciklamalari var:

http://programmers.stackexchange.com/questions/110634/why-would-it-ever-be-possible-for-java-to-be-faster-than-c

 

(Ozetle, anahtar kelime : JIT compiler)

 

JVM, teknik acidan cok ustun bir platform. Ben sahsen dil sozdizimini sevmiyorum. 3-4 senedir de Android disinda kullanmadim (ki standart JVM degil Android'deki.).

 

O tip başlıkları ve diğer performans testlerini çok okudum (C# da dahil). Genel olarak gördüğüm "aha bak şurada geçiyor" denilen noktalar küçük kod parçalarının tek tük derleyici optimizasyonundan (gerçekten iyi optimize edilmiş) faydalandığı noktalar. Daha karmaşık, işlemcinin ve sistemin tüm nimetlerinden faydalanan uygulamalarda, Java' nın veya C#' ın performans olarak iyi kodlanmış bir C/C++' ı  uygulamasını yakalamasına (yaklaşabilir) şu an imkan yok zaten. Optimizasyonun çuvalladığı noktalarda iki kat fark oluştuğu bile oluyor. O yüzden 3-5 satırlık bir kod parçası ile yapılan testin bir manası kalmıyor.

 

Atıyorum C++' da nesne ağaç yapısını kendine özel oluşturmak veya direk assembler optimizasyonu yapılan uygulamalar varken JIT filan hikaye kalır bunların yanında...Performans arıyorsanız aradaki katmanları yok etmeniz bir zorunluluk. İleride derleyiciler gerçek manada bu tip "uygulamaya özel" optimizasyon yapabilirse o zaman elbette şahane olur.

 

Her zaman söylediğim gibi uygulamaya uygun ortamda geliştirme yapmak esastır.

 

@@SkyWarrior, bilgisayarı her açtığımda "abi yine güvenlik açığı var, gel bir güncelleyelim Java' yı, her yerden blok yedik zaten" demesinden iyidir yeğen  :baba::P:lol: .

 

xavi.jpg

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Pre-.NET dönemlerinde çöken bir yazılım sistemin tamamını neden kilitliyordu diye bir araştırın yeter. 

 

 

iyi de koca bir endüstri ms'ten ibaret değil ki o kendini adam edemeyip vm çalışana kadarki süreyi es geçelim. neyse... sizle söz çarpıştırılmaz zira bir siz bilirsiniz her şeyin en iyisini :)

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

oop olacaksa cpp yazıp her platformda ayrı compile etmek çok zor iş sanki de cross-platform uğruna bunca performans kaybına boyun eğdi millet. 

 

Olay cross-platform olma durumu değil. Günümüz de bir çok os bir çok programlama ortamını zaten destekliyor. Sana kısaca şöyle özetleyim;

C++ dört ana unsurdan meydana gelir. Bunlar;

  1. C dili
  2. OOP
  3. Template ler
  4. STL (Standard Template Library)

ve bu kavramları öğrenmek ciddi biçimde zaman ve emek ister. Ek olarak dilin doğası gereği nesnelerin kopyalanma ve atama gibi durumlarda sergileği davranış biçimlerini belirlemek (ki bunlara dilimleme, çoklu kalıtımda oluşacak karmaşık delta aritmetiği dahil), bellek yönetimi, tipler arası geçişlerdeki problemlerden dolayı casting den kaçıp visitor pattern gibi farklı tasarım desenlerine yönelmek, referans ve işaretçi farkları, const kullanımı, exception-safety programlama, esnek operatör yükleme seçeneklerini düzgün kullanma, templating gibi sayısız konuda uzmanlık gerektirir. (Merak edenler Scott Meyers - Effective C++ ve Stephan Dewhurst - C++ Gotchas kitaplarına bakabilirler).

 
Java ise tüm bu problemler için harika çözümler üretmiştir. Ek olarak sahip olduğu metadata yapısıyla günümüz iletişiminin temel taşları olan nesnelerin xml/json gibi standarlarla platformlar arası taşınmasına çekirdekten(reflection) destek verir. Diğer tarafta .net' in linq/lambda expression ları, dinamik tip desteği, async/await yapısyla multi-thread programlamayı çocuk işi haline getirmesini düşünürsek neden insanların bu platfromlara yöneldiğini daha iyi anlarsın. Olayın cross-platform olma ile alakası yok olsaydı zaten Nokia' nın  qt platformu alır yürürdü.
 
İşte yukarıdaki sebeblerden ötürü kurumsal uygulamalarda java/.net kullanılır. Daha geçen yıla kadar windows hariç hiç bir platformu resmi olarak desteklemeyen .net' in tutma nedeni de budur. Yeni nesil ise bir yığın konfigürasyon dosyasıyla boğuşmak yerine @@kronus' un da belirttiği üzere hızlı, pratik ve iş gören basit çözümlere yöneliyor. (Örneğin wcf ve node.js de rest-api oluşturmaya çalışın ne demek istediğimi anlarsınız). Javascript' in sunucu tarafında bile bu kadar popüler olduğu bir dönemde javayı performanstan dolayı eleştirmek için 90 larda yaşamak gerek.
 
Bonus olarak managed ortamın native ortamlardan neden daha performanslı olacağına dair 'Clr via C#' kitabında güzel açıklamalar vardı;
 

 

You’ll probably find this hard to believe, but many people (including me) think that managed

applications could actually outperform unmanaged applications. There are many reasons to believe
this. For example, when the JIT compiler compiles the IL code into native code at runtime, the compiler
knows more about the execution environment than an unmanaged compiler would know. Here are
some ways that managed code can outperform unmanaged code:
 
• A JIT compiler can determine if the application is running on an Intel Pentium 4 CPU and
produce native code that takes advantage of any special instructions offered by the Pentium 4.
Usually, unmanaged applications are compiled for the lowest-common-denominator CPU and
avoid using special instructions that would give the application a performance boost.
 
• A JIT compiler can determine when a certain test is always false on the machine that it is
running on. For example, consider a method that contains the following code:
if (numberOfCPUs > 1) {
...
}
This code could cause the JIT compiler to not generate any CPU instructions if the host
machine has only one CPU. In this case, the native code would be fine-tuned for the host
machine; the resulting code is smaller and executes faster.
 
• The CLR could profile the code’s execution and recompile the IL into native code while the
application runs. The recompiled code could be reorganized to reduce incorrect branch
predictions depending on the observed execution patterns. 

 

Ek olarak günümüz de bırakın hayvan gibi metadata ya sahip managed dilleri, google' ın v8 javascript engine' in performansı bile göz yaşartan cinstendir. Şikayet edilen şey jvm' nin windows implementasyonu olabilir ancak.

YaRiLeTkEn, quad and analog beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

orada ben o cevabı sky'a yazdığımı tekrar edeyim.

 

editten önceki hali kelimesi kelimesine elimde yok ama özet geçeyim: akademik durumlar gereği c ve asm'den anlarım, oop'dan özellikle kavramsal olarak çok fazla anlamam, belki de javayı ondan sevmiyorum. sen (sky) profesyonel manada it'ci takılalı üç gün oluyor, hele dur bakalım ben iyi kötü 2001'den beri sektördeyim; bu şekilde ayar kayma bize de. bunun gibi bir şeydi. [kaldı ki sky'ın şu xHW camiasında hangi işe el atsa becerecek donanımdaki üç beş adamdan biri olduğunu da biliyorum.]

 

çünkü alıntıladığım yerde .net öncesinde neden çöküyor araştırın edin demiş, e ben dot.net'in çok öncesinden beri sektörde olan biri olarak buna içerleyip kendimce cevap yazmışım, buna da mı hakkım yok? 

 

kaldı ki hata ettiğimi anlayıp editlemişim. o sırada araya girip "nerede çalışıyorsan söyle de orayla işimiz olmasın"ı ağdalı bir üslupla yazınca karşınızdaki kırılmıyor mu? format-üslup-syntax mı önemli olan?

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Ben ITci değilim. IT işini hobi ve startup şirkete yardımcı olmak amacıyla yapıyorum onun haricinde 1994 den beri bilgisayarlarla zaten iç içeyim. Biyoinformatik şimdiki alanım (Şirkette de ağırlıklı biyoinf ve yeni nesil dizileme üzerine iş yapıyorum) ancak öncesinde 5 yıl amerikada java ve NI Labview tecrübem var. (Labview ile programlama yaptım böyle programlama dili olur mu demeyin workflow programlama biyoinformatik alanında bile iş yapmaya başladı uzun zamandır KNIME analytics, UGENE, Galaxy Server vs bunlardan sadece bazıları. WWF de epey ilerlemiş ama benim şimdilik oralarda bezim yok zaten) Şahsen kendi fikirlerimi söyledim kimseye bir ayar vermedim. Ezber konuşmayı sevmem. 

analog beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

@@analog, ben o mesajı yazdıktan sonra düzenlediniz kendi mesajınızı, benim mesajım o yüzden havada kaldı. Boş yere, safi birilerini kırmak için atılmış bir mesaj değildi, o karakterde olmadığımı da herkes bilir burada sanıyorum. En başında söyleseniz veya düzenlediğiniz mesaja küçük bir not ekleseniz iş bu noktaya gelmeyecekti, ben de kendi mesajımı düzenlerdim. Hatta düzenliyorum birazdan, madem hatalı olduğunuzu kabul ediyorsunuz ben de kendi hatamı telafi edeyim...

 

Üslup bu yüzden önemli; lafın nereye, kime gideceğini iyi kestirmek gerekir.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

B• A JIT compiler can determine if the application is running on an Intel Pentium 4 CPU and

produce native code that takes advantage of any special instructions offered by the Pentium 4.
Usually, unmanaged applications are compiled for the lowest-common-denominator CPU and
avoid using special instructions that would give the application a performance boost.
 
• A JIT compiler can determine when a certain test is always false on the machine that it is
running on. For example, consider a method that contains the following code:
if (numberOfCPUs > 1) {
...
}
This code could cause the JIT compiler to not generate any CPU instructions if the host
machine has only one CPU. In this case, the native code would be fine-tuned for the host
machine; the resulting code is smaller and executes faster.

 

Güzel ,bilgilendirici bir tartışma olmuş. 

 

-  Yaygın kullanılan bir uygulama unmanaged bile olsa, yeni işlemcilere göre optimize edilmiş yeni sürüm veya patch yayınlamaz mı? veya farklı CPU konfigrasyonlarına göre , farklı versiyonlar çıkarmaz mı? Tabii otomatik işleyen JIT a göre yine dezavantaj.

 

Yukarda başka bir arkadaş yeni yazılımcıların Python , Perl gibi dillere yöneldiğinden bahsetmiş. Pek bu şekilde öğrenebiliyorlar mı?

 

Bu işin profesyonelleri kadar bilgim yok , çocukken ilk assembler öğrenerek başladım , sorna hobi düzeyinde de olsa farklı dilleri ve temel algoritmaları öğrendim . İlgisiz görünse de , bunun faydasını da gördüm. Algoritma ve matematiğini öğrenmek her bilim dalındaki insanın fayda göreceği bir yetenek seti bence.

Doğrudan yüksek seviyeli dillerle başlayanlar , bir profesyonel olarak işin hakkını verebiliyor mu? Yüksek seviyeli diller ile gerçekte olan çok uzak birbirinden. En azından başlarken C öğrenseler, temelleri burdan kavradıktan sonra diğer dillere geçseler daha iyi değil mi?

 

Notepad ++   yeni başlayanlar için de iyi bence. IDE 'de arkada ne olduğunu anlamadan gidiyor iş. Oysa text dosyası olarak yazıp, bunu compiler 'a gönderdiğinde , aradaki işleri kendisi yaptığında , olay daha iyi anlaşılıyor. Hobi kullananlar için dezavantajı da auto-complete olmaması . Hergün kullanmadığından , unutuyorsun detayları. Yine bu açıdan Visual Studio 'nun , Eclipse 'e avantajı var. ihtiyaç duyduğun temel araçlar tek pakette geliyor.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

o jitin çalıştığı ortamı bilip ona göre optimizasyon yaptığı yalan dolan. jitin runtimeda yaptığı (hw ile alakası olmayan) optimizasyonlar var ama çok kısıtlı denebilir.

iş hıza gelirse c, c++ dan 3-5 kat daha hızlı ona bakılırsa. c++ ise bi kaç nano saniye hızlı olmak için ortalığa sıçıp batıran saçma sapan bi dil. dili tasarlarken alınan kararlar çıktığı döneme göre makul olabilir tabi o ayrı. yinede kısıtlı kaynaklara sahip kol saati işlemcisi gibi şeyler için javadan kat kat iyidir.

 

ek olarak java ve .netin jitlerek çalışmasının en büyük olayı garbage collectiondır. platform independent olması nadiren işe yarayan bi ayrıntı sadece.

tekrar yavaş hızlı olayına gelince günler aylar süren bilimsel hesaplama yapılmadığı sürece en büyük olay kodun düzgün yazılması. baktın performans kurtaracak seviyenin altında darboğaz yaratan yerleri tespit edip optimize edersin. yine olmadı donanım eklersin veya cluster yaparsın olur biter. bu şekilde çözülmeyecek bi olay görmedim ben.

OnLyTNT beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

o jitin çalıştığı ortamı bilip ona göre optimizasyon yaptığı yalan dolan. jitin runtimeda yaptığı (hw ile alakası olmayan) optimizasyonlar var ama çok kısıtlı denebilir.

 

Zamanında bir masaüstü bir de dizüstü sistemim vardı. Masaüstü işlemcim athlon64 idi ve centrino işlemcili düzüstü bilgisayarımdam çok daha performanslıydı. Hatta işlemcilerin kayar-nokta performansını ölçen ufak bir c++ fonksiyonu yazmıştım ve althlon64 ciddi oranda fark atıyordu. Sonra aynı kodu c#' a taşıdım ve testi onca kez tekrar etmeme rağmen bu sefer zayıf olan centrino işlemci daha yüksek skorlara ulaşıyordu. Hatta o dönem dhw' de @@ChipArchitect' e sorduğumda intel' in jvm ve clr ekipleriyle çok yakın çalıştığını ve yapılan optimizasyonlar neticesinde bu sonuca ulaşmanın mantıklı olduğuna dair şeyler söylemişti.

 

Elbette teoriden gerçek hayata döndüğümüzde aradan bytecode/jit/vm katmanlarını kaldırmak özellikle işlemci yoğun 3D, decode/encode gibi durumlarda managed code' a büyük fark atar. Hatta native kodla yazılmış bir windows uygulaması dahi kullanıcı için daha pürüzsüz bir deneyim sağlayabilir. Ancak iis de host edilen bir asp.net uygulaması yalnızca ilk request de jit' ı devereye sokacağından ve sonradan gelen tüm istekleri bu derlenmiş native kod üzerinde çalıştıracağından managed ortam ve onun sağladığı avantajlardan yararlanmak çok daha isabetli bir tercih olur.

 

Native kod lehine verdiğim örneklerin aksi de öne sürelebilir elbet. Örneğin bir thread' in windows için konuşursak ram bazında maliyeti 1mb' dır. Eğer siz C++ tarafında iyi bir thread pooling kütüphanesi kullanmıyorsanız .net de internal olarak gelen bu özelliği kullanan c# dilinde yazılmış bir uygulamaya göre daha fazla kaynak tüketebilirsiniz. Veya 'new' operatörünü düşünün; Bu operatör parametre olarak verilen boyut tutarında ram bloğunu os den talep ederek kendi process' ine tahsis eder. Bu işlem doğası gereği yavaştır ancak .net tarafında bu mekanizma şöyle çalışır; clr uygumanızın appdomain' i için örneğin 16mb' lık ram den bir alan tahsis eder. Halbuki sizin uygulamanız açılışta 4.5mb ram kullanmaktadır. İşte bundan sonra new operatörüne yapılan her çağrı 16-4.5=11.5 mb' lık yerden tahsis edilir ve stack-alloc işlemi kadar hızlıdır. Dolayısıyla performans olarak c++ uygulamasına memory-alloc işlemlerinde büyük fark atar. Ancak 16 mb sınırını aşarsanız performans anlamında çok sıkıntılı bir süreç başlayacaktır; clr uygulamanızın tüm thread lerini suspend eder ve os den 32mb bir alan tahsis edip sizin uygulamanızı memcpy benzeri bir fonksiyonla buraya kopyalar. Böyle bir durum oyunlar için kabul edilemezken sunucuda çalışan bir servis için çok daha fazla avantajlı olabilmektedir. managed-native performans farkları uygulamaların yapısına göre değişmektedir kısaca.

 

 

@@ResetButton

Yukarda başka bir arkadaş yeni yazılımcıların Python , Perl gibi dillere yöneldiğinden bahsetmiş. Pek bu şekilde öğrenebiliyorlar mı?

 

Yeni nesil derken çömez geliştirici demek istemedik. Bahsettiğimiz kişiler programlamanın temellerini iyi bilen ve bir çok teknolojiye aşina olup hızlı sonuca gitmek için teknoloji seçimini o doğrultuda yapan insanlar. Örneğin twitter ilk olarak ruby on rails ile geliştirilmiş. İlerleyen zamanlarda performans kaygılarından dolayı scale-java' ya geçilmiş. Eğer ilk başta RoR lehine bir tercih yapılmasydı belki de bu kadar başarılı olamazlardı.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

c++ konudunu mmx+sse3'e göre derlesen aynı şey olacaktı muhtemelen. yazarken aklıma geldiydi sse olayı ama c++ tarafında da yapmak çok kolay olduğu için es geçtim. yoksa bu makinede 4gb ram var ona göre derliyim olayı balon

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Üye olun ve sitemizin tüm avantajlarından yararlanın!


Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap


Hemen giriş yap
4 4

  • Bu sayfadaki üyeler   0 üye

    Şu an bu sayfayı görüntüleyen bir üye yok