Bu kodu en kısa nasıl yazarım

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
doktorf1
Üye
Mesajlar: 2
Kayıt: 04 Eki 2008 12:00

Bu kodu en kısa nasıl yazarım

Mesaj gönderen doktorf1 »

Merhabalar , siteye yeni üye oldum .Online olarak c# programcısı bir arakdaş ile sıkı bir tartışma içindeyim . Bana şu kodu tek satrıda yazabildiğini fakat Delphide bunun mümkün olmadığını söyledi .Ben olduğuna eminim , neticede Sytem unitini kullanacak.
"bir klasör içinde yer alan dosyalardan adında önce "o" sonra "a" harfi geçen kaç tane var bir saydırayım dedim

C# Kodu ise şöyle :
Console.WriteLine(new DirectoryInfo(@"c:\downloads").GetFiles().Count(f => Regex.IsMatch(System.IO.Path.GetFileName(f.Name), "o.*a")));
Yardımcı olursanız sevinirim .
Kurallar tek komut satırı olmalı , döngü olmamalı.
Teşekkürler.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen conari »

:) bunun için mi siteye üye oldun.

Fonksiyon yazılırak(tabi bunun içinde dögüde olur,değişkende v.s.)

Kod: Tümünü seç

klasordekilerisay(yol,ilkharf,ikiniciharf)
bu kodun yarısından daha kısa bir kod yazılır. sonuçta bu da bir fonksiyon kullanıyor.

Hatta hazır apilerde vardır.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
doktorf1
Üye
Mesajlar: 2
Kayıt: 04 Eki 2008 12:00

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen doktorf1 »

Tabiki sadece bunun için üye olmadım.
Kodda önemli olan nokta , prosedür veya fonksiyon ile yazılmaması . Zaten o arkadaşta örnekte API leri kullanıyor. O yüzden bende bunun APIler ile Delphide de olacağını düşünüyorum.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen emin_as »

C# dilinin üstün oldugu noktalar var. O komutu delphi de tek satırda yazamazsın. Bir fonksiyon yazman lazım, o fonksiyonda da dogal olarak döngü kullanacaksın. Ayrıca orada bir lambda ifadesi var, delphi de bu tür lambda ifadeleri kullanamıyorsun.

Arkadaşın sanırım şunu demek istemiş, "sistem kütüphanesini kullanan tek satırlık bu programın delphi de karşılıgı yok.

Arkadaşın dogru söylüyor, delphi hız konusunda dogrudan makina dili ürettigi için C# geçebilir, ama bu tür yazımlarda delphinin pek şansı yok.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen Battosai »

C# ın iyi denmesinin nedeni bu şekilde hazır kütüphanelerin fazla olması dolayısıyla basit ve hızlı çözüm üretmeye yönelik olması...Delphinin kütüphaneside gelişiyor bir çok kullanıcının çoğu hazır fonksiyondan haberi yok önemli olan işi yapabilmek dolayısıyla hız devreye giriyor kullanım açısından ve delphi oldukça hızlı...Eğer hazır fonksiyon yok ise kendiniz yazıp halledersiniz bunlar çok önemli mevzular değil....kullanım yerleri farklı zaten....
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen emin_as »

Yanlış anlattım galiba, C# sadece kütüphanelerdeki fonksiyonların fazla olmasıyla degil, ifadeleriyle diger dillere açık üstünlüğü vardır.

Kod: Tümünü seç

using System;
using System.Collections.Generic;
using System.Text;

namespace LINQTest
{
     class Program
     {
          static void Main(string[] args)
          {
               List<Personel> personeller = new List<Personel>();
               personeller.Add(new Personel{Ad="Sefer",No=3});
               personeller.Add(new Personel{Ad="Ali",No=6});
               personeller.Add(new Personel{Ad="Mehmet",No=2});
               personeller.Add(new Personel{Ad="Burak",No=16});
               personeller.Add(new Personel{Ad="Oguz",No=10});

               //var sonuclar = .. şeklinde de diyebilirdik.
               IEnumerable<string> sonuclar = from val in personeller
                                                                          where val.No > 5
                                                                          orderby val.Ad
                                                                          select val.Ad.ToUpper();

               foreach (string ad in sonuclar)
               {
                    Console.WriteLine( ad );
               }
          }
     }

     public class Personel
     {
          public string Ad;
          public int No;
     }
}

Yukarıdaki kodun alındıgı sayfa : http://www.csharpnedir.com/makalegoster.asp?MId=600

Yukarıdaki programı herhangi bir dille bu kadar sade ve kısa yazamazsınız.
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen t-hex »

Örnek verdiğin kod benim sitemden alınmış, benim yazdığım bir kod.
http://www.thexpot.net/2007/10/maziye-gittim-soyle-bir/

Zaten yazıda da bunu delphide yapmak için bir ton kod yazmak lazım demiştim. C# kodunun arkasında kocaman bir framework var, delphide öyle bir şey yok ve bu yüzden de delphide kısaca yazılamaması normal. Olay C#'ın güçlü olmasıyla da alakalı değil, aynı kod Ruby veya Python'da da tek ifade olarak yazılabilir. Framework ile alakalı yani
ibrahimcoban
Üye
Mesajlar: 163
Kayıt: 11 Eki 2005 10:44
İletişim:

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen ibrahimcoban »

.Net' de en küçük program 25 mb dır.
:D
http://ibrahimcoban.com/
Lazarus, Kol-Ce,Delphi ve C#
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen aslangeri »

s.a.
arkadaşlar birşey sormak istiyorum.
Delphinin hangi sürümünü kullanıyorsunuz?
kullandığınız sürüm çıktığı zaman ortada c# varmı idi?.
son model araba ile yıllardır kullanıdığınız arabayı karşılaştırıp bunda şu yok demek ne kadar mantıklı?
delphinin son sürümünü incelediniz mi?
[url=http://tr.delphipeak.com/tag/tiburon]burda 8/url] @sadettinpolat yeniliklere bir göz atmış.
son model arabanızda ctrl+space yapınca gelen pencerede sıralama yapabiliyormusunuz?
burdan yola çıkarak bizim eski araba daha iyi mi demeliyiz?
belki tek satırda o işlemi yapamayız ama bizim 100 satırda yazacağımız kod o tek satırlık koddan daha hızlı çalışacaktır.(sonuçta o da arka planda bizim 100 satırda yaptığımız işi yapacak). üstelik biz gerçek anlamda kod yazmış olacağız. o hazır bir fonksiyon çağırmış olacak. Elbetteki hazır bir fonksiyonu çağırmak daha kolay vede daha güzel (tabi arkada ne yaptığını biliyorsanız)

amacım birini yerip diğerini övmek değil.
ne yaptığımızı ve nasıl yaptığımızı bilmemiz gerektiğini vurgulamak istedim sadece..
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen akdatilla »

ibrahimcoban yazdı:.Net' de en küçük program 25 mb dır.
:D
Senin hesabına göre .Net tabanlı 64mb bir el bilgisayarına 2-3 program bile yükleyemessin.
Ancak benim bildiğim kadarıyla .net uygulamaları oldukça küçük boyutlu oluyor. Bunun sebebi de framework sisteminde
birçok işlemi yapmayı sağlayan kütüphanelerin bulunması. Delphi programının boyutunun büyük olmasının en büyük
sebebi exe içerisine vcl vb kütüphanelerin eklenmesidir. Framework uygulamalarında ekstra kütüphaneler exe dosyaya
yüklenmez. Bu sayede dosya boyutu çok küçük olur. 64mb belleğe 200 program bile yüklenebilir diye düşünüyorum.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen sabanakman »

MS bir zamanlar borlanddan ciddi yazılımcı transferleri yapmıştı. Hemen akabinde de .net platformu gelişti. Asıl olarak java'ya alternatif olarak görünür gibi olsa da özellikleri incelendiğinde ne hikmetse borland tasarımını andırıyor :) . Mesela .net dll'leri bildiğimiz delphi .bpl kütüphanesiyle tıpatıp aynı mantıkla geliştirilmişler. namespace denen kavram zımbırtısı bildiğimiz 40 yıllık unit'ler. nokta karakteri de kullanılabilir olduğundan biraz janjanlı olmuş. .net platformunda versiyon uyuşmazlığı ortadan kaldırılmış. Zaten olması gereken de buydu. Win32 için doğası gereği bu mümkün olmamaktadır fakat .net baştan tasarlanırken bu sorunu yaşayanlar tarafından dikkate alınmış. .net kütüphanelerinde karşılaşılan bir çok nesne delphi VCL'inde zaten mevcuttu örneklerde ve uygulamalarda karşılaşınca hiç şaşırmadım. Hatta bazı .net forum sitelerinde ilk zamanlar incelerken bildiğimiz VCL nesnelerini .net ortamında ilk kez inceleyenlerin ağzının suyu akıyordu, tuhafıma gitmişti. Tabi kütüphane kavramı daha da geliştirilebilir olduğundan o zengin bu fakir kıyaslaması yapmak çok komik olacaktır ama .net ile sunulan hazır imkanlar tartıda ağır çıkabilir. Bakarsan bağ, bakmazsan dağ olur misali hangisi daha çok ilgi görürse onun için geliştirilen imkanlar genişleyecektir. Eğer standart bir win32 uygulaması geliştirilecekse .net tamamen gözardı edilmeli. Performans olarak win32 uygulamasını yakalaması imkansızdır. Bunun haricinde bir web uygulaması veya patform bağımsız bir console ekranı programı yazılacaksa da (hangi program böyle ki :) ) .net'te program yazmak yerinde olacaktır. Boyut meselesine gelince, kullanılan kütüphaneleri .exe içine al seçeneği varsa boyu büyür, MB'larca boyuta ulaşır, aksi durumda kütüphane dosyalarından kullanılırsa çok küçük boyutlarda (yaklaşık 30 KB'tan başlar projeye göre büyür gider) programlar yazılabilir. Bu hem .net için hem de win32 için böyledir (Project->Options->Packages->Built with runtime packages seçeneği işaretli ise kütüphane kodları .exe dışında tutulur ihtiyaç duyulan .bpl'lerin de taşınması zorunluluğu vardır). Tabi kullanılan kütüphane dosyalarının da sistemde yüklü olması zorunluluğu vardır ve eğer .net için standart kütüphane dışına çıkılmadı ise ufacık bir proje framework yüklü her yerde çalışacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen Battosai »

.Net projelerinin boyutu küçük olur zira istediği framework GB seviyesine yakın :twisted: Bende buna gıcık oluyorum vistada heralde kurulu geliyor ama XP kullanıcıları için can sıkıcı olabiliyor.1mb program çalıştırmak için yükle devasa framework'u...Kotalı türk kullanıcısı sevmez bu işi sevmiyorda :twisted: Dolayısıyla Win32 uygulamaları için .Net kullanmak programcı için iyi kullanıcı için sıkıntılı olabiliyor...
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen unicorn64 »

akdatilla yazdı:
ibrahimcoban yazdı:.Net' de en küçük program 25 mb dır.
:D
Senin hesabına göre .Net tabanlı 64mb bir el bilgisayarına 2-3 program bile yükleyemessin.
Ancak benim bildiğim kadarıyla .net uygulamaları oldukça küçük boyutlu oluyor. Bunun sebebi de framework sisteminde
birçok işlemi yapmayı sağlayan kütüphanelerin bulunması. Delphi programının boyutunun büyük olmasının en büyük
sebebi exe içerisine vcl vb kütüphanelerin eklenmesidir. Framework uygulamalarında ekstra kütüphaneler exe dosyaya
yüklenmez. Bu sayede dosya boyutu çok küçük olur. 64mb belleğe 200 program bile yüklenebilir diye düşünüyorum.
arkadaşın vurgulamak istediği 20 küsur mb boyutundaki framework setup dosyası anladığım kadarıyla.
ayrıca el bilgisayarı için kullanılan compact framework pc ye kurulanla aynı olmadığı gibi kurulum dosyası yaklaşık 5mb civarında
ve pc ye kurulana göre çok daha kısıtlı olduğu için kurulum sonrası kaplayacağı alan da o kadar çok değil....
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen sabanakman »

Hem, eğer yanlış hatırlamıyorsam XP'nin ServicePack1'inde framework vardı, olmadı SP2'de garanti :twisted: . SP3 çıkalı çok olduğundan framework'leri windowsa yüklemek çok sıkıntı olmaz herhalde (daha geçen gün adamın biriyle 98'i bırak artık yeni işletim sistemine geç diye tartışmamışım gibi ne de rahatım değil mi?).
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Bu kodu en kısa nasıl yazarım

Mesaj gönderen emin_as »

C# her gördügü şeyden birşeyler aldı. Genel yazılım C++ andırır, ama java, delphi gibi programlarla da benzerlikler taşıyor.

Herhangi bir dille yazılmış programı, diger dillerle de yazabilirsiniz. Dil aslında sınırlayıcı bir faktör degildir. C, C++, python, delphi vs farketmez, bir dilin yaptıklarını diger diller de yaparlar. Günümüzde önemli olan sadece bir kereligine program yazmak degil programın hatalardan arındırılmasını, yeni özellikler eklenmesi vs gibi işleri yapabilmektir. Bir programın kısa sürede yazılıp, hazırlanması da son derece önemldir. C# dll kütüphanelere kolayca baglanıp, onları kullanabilmesiyle diger dillerden önemli ölçüde öne çıkıyor.

C# hız olarak yavaş ve kaynakları fazla kullanıyor. Ama çogu programcı için hız ve kaynaklar arka planda kalıyor. Programa yeni özelliklerin kolayca eklenmesi ve yazm rahatlıgı daha öncelikli konular.

Burada delphiyi küçümsemiyorum, turbo pascal 5.0 dan beri pascal, delphi ile program yazıyorum ve bir ara borland c++ 4.0 la da program yazdım. OWL, turbo vision, MFC hepsiyle azçok haşır neşir oldum. Linux ortamında yazmasam da gtk, qt kitaplıklarını da inceledim. Söylemek istedigim uzun vadede C# çok avantajlı bir dil ve diger dillere açık üstünlükleri var. Sürekli eklenen özelliklerle de bu üstünlüklerini artırıyor.

Ayrıca C# WPF ile zengin bir kullanıcı arabirimi sunuyor. WPF yi kullanıp, xaml ile çok zengin arabirimler yaratmak mümkün. Kullanımı sadece web ve konsolla sınırlı degil, çok geniş kütüphanelere sahip. Delphiyle yazdıgınız her programı C# ile de yazabilirsiniz, sadece biraz daha yavaş çalışır, daha çok kaynak tüketir ve kullanıcının bilgisayarında framework kurulu olması gerekir.

http://en.wikipedia.org/wiki/C_Sharp_(p ... _language)
Cevapla