Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi & C# & Java
#1
Merhaba arkadaşlar, konu başlığında belirttiğim dillerden en az ikisinde uygulamalar geliştirmiş arkadaşlarımın bu diller için; yapabildikleri/yapamadıkları, güçlü/zayıf oldukları yanlar, yaşadığınız zorluklar, beğenmediğiniz hususlar, diğerinde olduğu halde kullandığınızda olmayan özellikler vb. kıyas, görüş ve tecrübelerinizi paylaşmanızı rica edeceğim.

Ancak; slogan (X candır, gerisi heyecandır gibi) paylaşmayalım lütfen Shy
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#2
Özellikle; .Net Core'un şu anda 3.0 versiyonunda olduğunu ve bir ivme ile hareket ettiğini de hatırlatmam gerekiyor olabilir  Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
Delphi haricinde pek fazla farklı dil kullanma imkanım olmadı ama web browser uygulama geliştirme konusunda Delphi tek başına (unigui, iw, ...) bence yeterli değil. Ayrıca MVC kütüphanesi var fakat hiç denemedim. Kişisel görüşüm bu yönde.

.net MVC framework, PHP bir sürü framework var. Tabiki framework dil değil ama kullanıcı için coook büyük kolaylık. Bu aralar Laravel PHP framework e bakıyorum çok çok basit Bir şekilde istediğiniz uygulama için alt yapıyı kurup hızlı bir şekilde bir sonuç alabiliyorsunuz.

Masaüstü uygulama geliştirme için canavar diyebilirim
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#4
Java'da Pointer ve Const kavramlarının olmadığını duyunca çok garibime gitmişti. (Ki bunları dolaylı yoldan yapabiliyormuşuz, ki o da çok ilginç... ) O nedenle Java'ya merak saldım, henüz başında olmakla birlikte bir öğrenme sürecindeyim. Java'nın dil diyalektiği ve kütüphaneler anlamında güzel işler çıkardığını görüyorum... Bunun dışında OOP anlamında Pascal'ın Java'dan aşağı kalır bir yanını veya "tersini" göremedim.

Java konusunda görüş alışverişinde bulunabileceğim diğer arkadaşlarımla da tanışmak isterim...
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
WWW
Cevapla
#5
Merhabalar,
Ben masaüstü uygulama için çoğunlukla Delphi kullanıyorum ama ;
Delphide Yaşadığım problem veya eksiklikler dersek,
1. Dlephide (C# vb türlede  publish) dediğimiz olayın olmaması beni çok yoruyor. Uygulama için güncelleme vs işlemlerinde kendim versiyon kontrolü dosya transferi ugulama açma kapatma vs işlemleri için çok eziyet olur. Ha burada benim çömezliğimde buna neden olabilir. Bu versiyon kontrol işlemi için bir component yazabilir projelere onu ekleyerek her zaman onu kullanabilirdim vs ama. Visual Studio tarafında direk publish ederek sorunsuzca update işlemlerini takip edebiliyorsun.
2.Delphide Default Settings olayı.
Açıklamam gerekirse mesela bir masaüzeri uygulama geliştirdim bunun bir SQL bağlantısı için bir IP adresi login vs işlemi gerekiyor bunun için
INI file yada txt içine yazmam gerekiyor ve program açılırken o INI dosyasından okumalıyım.
Ama Visual Tarafında Programın kendi ayarlarında içine gömülü ayar tanımı yeri var oradan yazabiliyorsun programı kodlarken okuyabiliyorsun ve böyle bir derdin olmuyor.

Web tarafında zaten delphi ile UniGui de birkaç çalışmam oldu ama çok kısıtlı durumlar var. Bu yüzden Web tarafında tamamen MVC tercih ediyorum.

Şunu da Belirteyim Masaüstü programlar delphi tarafında mesela en sevdiğim durum şurası ben Devexpress kullandım programı bir derliyorum tek 1 exe
herşey içinde ama burada da boyut sıkıntısı oluyor
Onu da Upx vs ile sıkıştırınca süper oluyor.

Rad studio Idesinde en nefret ettiğim durum Geri almak yada Mouse ile bir yere tıkladığımda o satırın son kelimesinin yanına focuslanması gerekirken tıkladığım yere focuslanması Smile
Cevapla
#6
(25-09-2019, Saat: 09:12)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Özellikle; .Net Core'un şu anda 3.0 versiyonunda olduğunu ve bir ivme ile hareket ettiğini de hatırlatmam gerekiyor olabilir  Wink

.Net Core'u, tek cümleyle açıklayayım;  "Microsoft'un Linux ile imtihanı!"   Big Grin

Cross olarak tabir ettikleri bu mimaride geliştirilen bir web servisi, Linux sunucu üzerinde çalıştırmak için tabiri caiz ise kırk takla attırılıyor.

Bunun sebepleri;
1- Linux sunucu üzerinde bir çok bağımlılığının (ek servis ve paket ihtiyacı) olması,
2- "Temel Web uygulamasını başlatmak ve izlemek için systemd ve hizmet dosyası oluşturmayı kullanın." diyor msdn.
Detayına bakalım;
aşağıdaki komutu çalıştırın diyor.
 sudo nano /etc/systemd/system/kestrel-helloapp.service
Yani sistem altında, service uzantılı bir dosya oluşturun diyor.  (kestrel-helloapp.service)
Bu dosya içeriğine bakalım.
[Unit]
Description=Example .NET Web API App running on CentOS 7

[Service]
WorkingDirectory=/var/www/helloapp
ExecStart=/usr/local/bin/dotnet /var/www/helloapp/helloapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

3- Linux konfigürasyon dosyalarından farklı bir (Ini dosya yapısında) dosya olduğunu görüyoruz.
Şu satır umarım dikkatinizden kaçmamıştır.
ExecStart=/usr/local/bin/dotnet /var/www/helloapp/helloapp.dll

Çalıştırılan ve servis denen uygulama bildiğimiz dll dosyası.  Confused
Çalıştığı platform Linux.
O zaman exe için de böyle bir eklenti yapsınlar. Böylece tüm dosyalarımızı Linux üzerinde çalıştırmış olalım! Bunun adına cross platform diyor msdn.

4- Dakika bir, gol bir; servis başlamadan kendimi nasıl kapatabilirim in yollarını arıyor.  Big Grin

Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10

Yani diyor ki "Dotnet servisi kilitlenirse servisi 10 saniye sonra yeniden başlatın". Türkçesi; bana güven olmaz, ara sıra donabilirim. Sen beni ısıt. Smile
(Linux webModule olarak geliştirdiğim bir servis 6 aydır hiç resetlemedim. Çünkü .so uzantılı doğal Linux kütüphanesi)

KillSignal=SIGINT
Satırında bir emniyet kemeri kullanıyor (teşbihte hata olmaz: eşeği sağlam kazığa bağlıyor); eğer uygulama yeniden başlatılamaz ise, harici bir servisle ben seni sonlandırabileyim diyor. yani harici bir etki ile beni sonlandırabilir veya yeniden başlatabilirsiniz, diyor.

5- msdn'den devam edelim. Sonrasında aşağıdaki komutu çalıştırın diyor. 
sudo systemctl enable kestrel-helloapp.service
Yani uygulamayı web servis olarak çalıştırmak için Linux üzerinde çalışan bir servis oluşturun ve bunu çalıştırın. Bir servisin çalışması bu ana servisin çalışmasına bağlı. (İlk maddede bahsetmiş olduğum bağımlılık.)

6- Linux file sistem yapısına aykırı bir dosya (dll), kestrel denilen farklı bir uygulamayla yayınlanıyor. Tabi bunun için bir de  kestrel servisinin çalışması gerekiyor. Bunu nereden biliyorum? msdn de işlemin devamında bu servisin loglarını aşağıdaki servis üzerinden takip edebilirsiniz diyor.
sudo journalctl -fu kestrel-helloapp.service

Kaynaklardocs.microsoft.com - Apache ile Linux üzerinde ASP.NET Core barındırma  

"ASP.NET Core ile geliştirilen web uygulamalarını çalışmak için Kestrel’i kullanılıyor" - Kaynak:https://www.minepla.net/2018/02/linux-uzerinde-aspnet-core-servis-olarak-calistirmak/


C#'çılar hiçbir zaman kral çıplak diyemedi. 
Emin olun kısa bir süre sonra "eureka-buldum" diye haykırıp, "bu mimariden daha iyi bir teknoloji ürettik", deyip halihazırdaki bu sitemin yanlış bir sistem olduğunu yine söylemeyecekler.

Peki Rad Studio veya Delphi ile geliştirilen web servisin bu mimariden farkı ne? derseniz;
1- Delphi ile geliştirdiğimiz uygulamayı compile ettiğimizde .so uzantılı native Linux kütüphane dosyası oluşuyor.
2- Bu dosyayı Apache modul dizinine ( /usr/lib/apache2/modules/) taşıyoruz.
3- Linux modül dosyalarının yüklenmesi için gerekli olan modül yükleme konfigürasyon dosyasını oluşturup, modülü yükle diyoruz. (LoadModule algitsin_module /usr/lib/apache2/modules/libmod_algitsin.so ) Bu konfigürasyon her modül için zorunludur.
4- Son olarak bu modül dosyasını şu URL'e istekte bulunduğunda çalıştır diyoruz.
(       <Location /algitsin>
             SetHandler libmod_algitsin-handler
      </Location>
)
PHP ile de bir servisi yayınlasanız yukarıda bahsetmiş olduğum son üç adımı gerçekleştirmeniz gerekiyor.
Yani Delphi, Linux hedef platform native bileşenleri ile web servisini çalıştırıyor. Herhangi bir servis veya paket bağımlılığı yok. Restart ihtiyacı yok. Çünkü sistemde bulunan tüm modül dosyaları, sistem tarafından yönetiliyor.

Önemli Not: Delphi ile bir Web Servisin nasıl yazılacağını 28 Eylül 2019 - Cumartesi günü sabah saat 11:00 de başlayacak eğitim seminerimizde daha detaylı olarak öğrenebilirsiniz.
Cevapla
#7
İşin teknik olmayan tarafında ise şöyle bir durum var ne yazık ki. Delphi'nin sorununun pazarlama ve iş olanakları kısmında başladığını düşünüyorum. Hiç bir yeni yazılımcı eleman ihtiyacı (yoka yakın) olmayan bir dili öğrenmek istemezse, hiç bir kurum o dili kullanmak istemezse o dil ya da nesne her ne olursa olsun sonuç hüsran diye düşünüyorum.

Stack Overflow Developer Survey Results 2019

   

   
Cevapla
#8
@Tuğrul HELVACI abi , karşılaştırma derken delphi ile eclipse/netbeans gibi ideleri mi karşılaştırcaz yoksa dil olarak object pascal ile javayı mı karşılaştırcaz ? Tam emin olamadım.

ide olarak bakarsak eclipse kadar geliştiriciye tuzak kuran bir ide hayatımda görmedim Smile
herşeyi ideye doldurmuşlar , saç baş yolduran bir sürü bug var. bu saçma hatalardan dolayı insanların saatleri boşa gidebiliyor. netbeans bu konuda daha başarılı bir ide. geliştiriciyi daha az uğraştırıyor. delphiye kıyaslamaya gelince hem eclipse hem netbeans bedava , delphiye ise her yıl binlerce lira lisans parası ödemek gerekiyor. başka sözüm yok hakim bey.


dil olarak karşılaştırırsak ben pascalın interface ve implementetion kısımlarının ayrı olmasını seviyorum ve bana daha kullanışlı geliyor.
Kod içinden sınıfın yapısını , metodlarını , propertylerini hızlı bir şekilde görebiliyorum. Javada böyle bir ayrım yok. dökümantasyon olmadan bir sınıfın metodlarını hızlı bir şekilde görme imkanı yok. satır satır bakmak lazım ya da ide üzerinden sınıfa ait metodları gösteren ek araçlar kullanmak lazım.

çalışma mantıkları farklı olduğu için (biri nativ birisi sanal makine) ortaya çıkan bazı avantajlar ve dezavantajları mevcut. bunlara değinmiyorum zira aynı kulvarın yarışçıları değiller. biri masaüstünde daha güçlüyken diğeri kurumsal web uygulamalarında güçlü.


topluluk olarak kıyaslarsak java bu konuda çok çok ilerde , kıyaslamaya gerek yok.
WWW
Cevapla
#9
(25-09-2019, Saat: 13:53)sadettinpolat Adlı Kullanıcıdan Alıntı: @Tuğrul HELVACI abi , karşılaştırma derken delphi ile eclipse/netbeans gibi ideleri mi karşılaştırcaz yoksa dil olarak object pascal ile javayı mı karşılaştırcaz ? Tam emin olamadım.

ide olarak bakarsak eclipse kadar geliştiriciye tuzak kuran bir ide hayatımda görmedim Smile
herşeyi ideye doldurmuşlar , saç baş yolduran bir sürü bug var. bu saçma hatalardan dolayı insanların saatleri boşa gidebiliyor. netbeans bu konuda daha başarılı bir ide. geliştiriciyi daha az uğraştırıyor. delphiye kıyaslamaya gelince hem eclipse hem netbeans bedava , delphiye ise her yıl binlerce lira lisans parası ödemek gerekiyor. başka sözüm yok hakim bey.


dil olarak karşılaştırırsak ben pascalın interface ve implementetion kısımlarının ayrı olmasını seviyorum ve bana daha kullanışlı geliyor.
Kod içinden sınıfın yapısını , metodlarını , propertylerini hızlı bir şekilde görebiliyorum. Javada böyle bir ayrım yok. dökümantasyon olmadan bir sınıfın metodlarını hızlı bir şekilde görme imkanı yok. satır satır bakmak lazım ya da ide üzerinden sınıfa ait metodları gösteren ek araçlar kullanmak lazım.

çalışma mantıkları farklı olduğu için (biri nativ birisi sanal makine) ortaya çıkan bazı avantajlar ve dezavantajları mevcut. bunlara değinmiyorum zira aynı kulvarın yarışçıları değiller. biri masaüstünde daha güçlüyken diğeri kurumsal web uygulamalarında güçlü.


topluluk olarak kıyaslarsak java bu konuda çok çok ilerde , kıyaslamaya gerek yok.

IDE kıyaslaması için eclipse ya da netbeans yerine lisan ücreti olan Jetbrains'in IntelliJ IDEA ürünü ile kıyaslamak daha anlamlı olur diye düşünüyorum.  Angel
Cevapla
#10
(25-09-2019, Saat: 12:55)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(25-09-2019, Saat: 09:12)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Özellikle; .Net Core'un şu anda 3.0 versiyonunda olduğunu ve bir ivme ile hareket ettiğini de hatırlatmam gerekiyor olabilir  Wink

.Net Core'u, tek cümleyle açıklayayım;  "Microsoft'un Linux ile imtihanı!"   Big Grin

Cross olarak tabir ettikleri bu mimaride geliştirilen bir web servisi, Linux sunucu üzerinde çalıştırmak için tabiri caiz ise kırk takla attırılıyor.

Bunun sebepleri;
1- Linux sunucu üzerinde bir çok bağımlılığının (ek servis ve paket ihtiyacı) olması,
2- "Temel Web uygulamasını başlatmak ve izlemek için systemd ve hizmet dosyası oluşturmayı kullanın." diyor msdn.
Detayına bakalım;
aşağıdaki komutu çalıştırın diyor.
 sudo nano /etc/systemd/system/kestrel-helloapp.service
Yani sistem altında, service uzantılı bir dosya oluşturun diyor.  (kestrel-helloapp.service)
Bu dosya içeriğine bakalım.
[Unit]
Description=Example .NET Web API App running on CentOS 7

[Service]
WorkingDirectory=/var/www/helloapp
ExecStart=/usr/local/bin/dotnet /var/www/helloapp/helloapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

3- Linux konfigürasyon dosyalarından farklı bir (Ini dosya yapısında) dosya olduğunu görüyoruz.
Şu satır umarım dikkatinizden kaçmamıştır.
ExecStart=/usr/local/bin/dotnet /var/www/helloapp/helloapp.dll

Çalıştırılan ve servis denen uygulama bildiğimiz dll dosyası.  Confused
Çalıştığı platform Linux.
O zaman exe için de böyle bir eklenti yapsınlar. Böylece tüm dosyalarımızı Linux üzerinde çalıştırmış olalım! Bunun adına cross platform diyor msdn.

4- Dakika bir, gol bir; servis başlamadan kendimi nasıl kapatabilirim in yollarını arıyor.  Big Grin

Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10

Yani diyor ki "Dotnet servisi kilitlenirse servisi 10 saniye sonra yeniden başlatın". Türkçesi; bana güven olmaz, ara sıra donabilirim. Sen beni ısıt. Smile
(Linux webModule olarak geliştirdiğim bir servis 6 aydır hiç resetlemedim. Çünkü .so uzantılı doğal Linux kütüphanesi)

KillSignal=SIGINT
Satırında bir emniyet kemeri kullanıyor (teşbihte hata olmaz: eşeği sağlam kazığa bağlıyor); eğer uygulama yeniden başlatılamaz ise, harici bir servisle ben seni sonlandırabileyim diyor. yani harici bir etki ile beni sonlandırabilir veya yeniden başlatabilirsiniz, diyor.

5- msdn'den devam edelim. Sonrasında aşağıdaki komutu çalıştırın diyor. 
sudo systemctl enable kestrel-helloapp.service
Yani uygulamayı web servis olarak çalıştırmak için Linux üzerinde çalışan bir servis oluşturun ve bunu çalıştırın. Bir servisin çalışması bu ana servisin çalışmasına bağlı. (İlk maddede bahsetmiş olduğum bağımlılık.)

6- Linux file sistem yapısına aykırı bir dosya (dll), kestrel denilen farklı bir uygulamayla yayınlanıyor. Tabi bunun için bir de  kestrel servisinin çalışması gerekiyor. Bunu nereden biliyorum? msdn de işlemin devamında bu servisin loglarını aşağıdaki servis üzerinden takip edebilirsiniz diyor.
sudo journalctl -fu kestrel-helloapp.service

Kaynaklardocs.microsoft.com - Apache ile Linux üzerinde ASP.NET Core barındırma  

"ASP.NET Core ile geliştirilen web uygulamalarını çalışmak için Kestrel’i kullanılıyor" - Kaynak:https://www.minepla.net/2018/02/linux-uzerinde-aspnet-core-servis-olarak-calistirmak/


C#'çılar hiçbir zaman kral çıplak diyemedi. 
Emin olun kısa bir süre sonra "eureka-buldum" diye haykırıp, "bu mimariden daha iyi bir teknoloji ürettik", deyip halihazırdaki bu sitemin yanlış bir sistem olduğunu yine söylemeyecekler.

Peki Rad Studio veya Delphi ile geliştirilen web servisin bu mimariden farkı ne? derseniz;
1- Delphi ile geliştirdiğimiz uygulamayı compile ettiğimizde .so uzantılı native Linux kütüphane dosyası oluşuyor.
2- Bu dosyayı Apache modul dizinine ( /usr/lib/apache2/modules/) taşıyoruz.
3- Linux modül dosyalarının yüklenmesi için gerekli olan modül yükleme konfigürasyon dosyasını oluşturup, modülü yükle diyoruz. (LoadModule algitsin_module /usr/lib/apache2/modules/libmod_algitsin.so ) Bu konfigürasyon her modül için zorunludur.
4- Son olarak bu modül dosyasını şu URL'e istekte bulunduğunda çalıştır diyoruz.
(       <Location /algitsin>
             SetHandler libmod_algitsin-handler
      </Location>
)
PHP ile de bir servisi yayınlasanız yukarıda bahsetmiş olduğum son üç adımı gerçekleştirmeniz gerekiyor.
Yani Delphi, Linux hedef platform native bileşenleri ile web servisini çalıştırıyor. Herhangi bir servis veya paket bağımlılığı yok. Restart ihtiyacı yok. Çünkü sistemde bulunan tüm modül dosyaları, sistem tarafından yönetiliyor.

Önemli Not: Delphi ile bir Web Servisin nasıl yazılacağını 28 Eylül 2019 - Cumartesi günü sabah saat 11:00 de başlayacak eğitim seminerimizde daha detaylı olarak öğrenebilirsiniz.

Maalesef yazdıklarınızın çoğu hatalı.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi 7 Unrar mcuyan 12 462 19-03-2024, Saat: 10:30
Son Yorum: frmman
Lightbulb Delphi 7zip Password lü Dosya Sıkıştırma ve Açma + Bonus RAR5 Desteği frmman 6 262 16-03-2024, Saat: 17:55
Son Yorum: delphi.developer
  delphi 12 ile TFileStream çalışmıyor aegean 5 421 05-03-2024, Saat: 22:23
Son Yorum: aegean
  Delphi ile geliştirdiğiniz uygulamalar neler? - İki Ödüllü Mr.Developer 20 12.676 01-01-2024, Saat: 22:46
Son Yorum: aegean
  Delphi 7 ye göre MB Döviz kurları nasıl alırız maydin60 7 962 31-12-2023, Saat: 02:18
Son Yorum: maydin60



Konuyu Okuyanlar: 1 Ziyaretçi