İddialı fikirler!!! - sayfa 4

 
TheXpert :
Yerleşmek.
Ve neden birdenbire? Kör dini inançlar zarar verir mi? :)
 
Andrei01 :

Neden saçmalık? İstediğiniz veriye veya işleve ulaşmak için kaç tane işaretçiyi yinelemeniz gerektiğini sayın.

Saymayı biliyorsanız. :)


Yerleşecek misin? ne sıralamak nereden alınır? bir sınıfın yeni bir örneğini oluştururken - sınıf türünün bir değişkeni, bağlantı tablosunun bir kopyası oluşturulur ve hepsi bu kadar

bir sınıftaki verilere erişim, normal bir değişkenin hızı aynı, sınıflar içinde (özel, genel) erişim haklarını ayırmak için tüm tanımlayıcı ölçülerin tümü derleyici düzeyindedir, derlenmiş kod yalnızca fiziksel bellek hücreleriyle çalışır

Diyelim ki, diğer kurnazca oluşturulmuş sınıflardan anında kurnazca oluşturulan bir "karmaşık dinamik sınıf" olacak. Ne olmuş? Sonunda, her şey belirli bir işlev tarafından ele alınacaktır. Duc, böyle sirk oyunları için bahçeyi çitle çevirmeye değer miydi?

hastalık ilerliyor mu? Size birkaç kez OOP'nin programcıyı rutin veri hazırlama, veri içeriği kontrolünden kurtardığı ve bir sınıf içinde yöntemleri nasıl uyguladığınız veya üçüncü taraf işlevlerini nasıl çağırdığınız programcıya kalmış olduğu söylendi.

OOP da geçmişte kaldı. Şimdi eğilim, CUDA gibi esas olarak C'de olan donanım odaklı programlamadır. Entegre GPU'lu işlemcilerin piyasaya sürülmesiyle, bu daha da geliştirilecektir. İşlemci firmaları zaman içinde yalnızca evrensel işlemci çekirdeği üretmeyi durdurmayı planlıyor.

burada yetkin değilim ve ağzınızda bu bilgi güvenilir görünmüyor

Not: neden yazıyorum - teknik forumlarda saçma sapan şeyler yazmayın - bilgiyi paylaşabilirsiniz - paylaşın, bilgi yok - sorun

 
IgorM :


Yerleşecek misin? ne sıralamak nereden alınır? bir sınıfın yeni bir örneğini oluştururken - sınıf türünün bir değişkeni, bağlantı tablosunun bir kopyası oluşturulur ve hepsi bu kadar

bir sınıftaki verilere erişim, normal bir değişkenin hızı aynıdır, sınıflar (özel, genel) içindeki erişim haklarını ayırmak için tüm tanımlayıcı ölçüler derleyici düzeyindedir, derlenmiş kod yalnızca fiziksel bellek hücreleriyle çalışır

Sonra uzmana böyle bir soru. Üç dinamik diziden oluşan bir sınıf var (derleme aşamasında boyutlar bilinmiyor).

Ve şimdi lütfen rastgele bir statik diziye ve sınıf içinde bulunan dinamik bir diziye erişim için işlem sayısını sayın ve karşılaştırın.

 
IgorM :

burada yetkin değilim ve ağzınızda bu bilgi güvenilir görünmüyor
Fakat bilginin güvenilirliği, onu kimin söylediğine mi bağlı? Görünüşe göre aklı başında herhangi bir kişi, bilginin öznel değil nesnel bir şey olduğunu anlamalıdır. :)
 
Andrei01 :

Ve burada verilerin gösterimi için programın mantığı? Bu şeyler alakasız.

Programın mantığı, herhangi bir girdi verisi üzerinde aritmetik işlemlerdir ve verilerin sunumu, yalnızca şu veya bu biçimdeki verilerdir.

Nesneler için harici işaretçiler doğrudan erişim yerine dahili verilere (işlevler ve değişkenler) erişiyor gibi göründüğünden, OOP'deki program kodu tanım gereği indirgenemez. Ancak bilgi işlem işaretçileri ve belleğe erişim çok yavaş bir işlem olduğundan, performans buna bağlı olarak yavaşlar.

Bir OOP uygulaması geliştirmek, sınıf kitaplıkları geliştirmekle aynı şey değildir. Açıkçası, bir kitaplığın geliştiricisi _genel olarak_ kendi kitaplığının uygulama programlarını yazanlar tarafından _özel olarak_ ne için kullanılacağıyla ilgilenmemelidir. Örneğin: çekiç üreticisi, ürünlerini nasıl kullandığınızı hiç umursamıyor - çivi çakmak veya fındık kırmak için. Görevi bir enstrüman yaratmaktır. Ayrıca OOP'de sınıflar, genellikle geniş ve her zaman açıkça tanımlanmış olmaktan uzak belirli bir dizi görevi çözmek için tasarlanmış bir araçtır (kim bilir, belki bir çekiçle ıslak hamamböceklerine gideceksiniz?).

Bir kez daha tekrar edeceğim - OOP'nin temel görevlerinin kararı için gerekli değildir. Ama öte yandan, bir çivi çakmak isteyen herkesin kendine bir çekiç yapması gerektiğini düşünmüyor musunuz?

Tabii ki, burada fonksiyon kütüphaneleri olduğu gibi tartışılabilir, neden daha fazla sınıfa ihtiyacınız vardı? Ancak bu durumda, kalıtım, tip uzantısı, aşırı yükleme vb. mekanizmaların sağladığı kolaylıklardan kendinizi mahrum edersiniz. Kabaca söylemek gerekirse, çekiçle yapılmış bir motoru kendi elinizle vidalayabilir ve istediğiniz gibi çalıştırabilirsiniz, ancak bunun için çekiç cihazını anlamanız gerekmez: bilmeniz gereken tek şey çivi çakabilecekleridir.

Bu yüzden, inanın bana, OOP, uygulama programları yazan programcıların o kısmı için hayatı gerçekten kolaylaştırıyor. Başka bir şey de, MQL5 için kütüphanelerin yeteneklerinin hala çok sınırlı olmasıdır, ancak bu bir zaman meselesidir ve kütüphane geliştiricileri bununla ilgilenecektir (tabii ki, aynı kişiler olabilir - ancak gerekli değildir). İyi geliştirilmiş bir sınıf kitaplıkları sistemi ile, bir kullanıcı-programcının pratikte nasıl olduğunu merak etmeden "1. program, işte veriler" "2. program, say" gibi bir programda bir veya iki satır yazması yeterlidir. detaylı çalışıyor. Yapı yönelimli programlama ile bu elde edilemez.

Bana öyle geliyor ki, OOP'ye karşı önyargınız, ya yeterince karmaşık görevlerle karşılaşmamış olmanız ya da tembellik ya da başka bir nedenden dolayı yapmak istememenizin bir sonucudur. Bunu boşuna söylerdim. Ancak sahibi bir beyefendi.

 
Andrei01 :

Sonra uzmana böyle bir soru. Üç dinamik diziden oluşan bir sınıf var (derleme aşamasında boyutlar bilinmiyor).

Ve şimdi lütfen rastgele bir statik diziye ve sınıf içinde bulunan dinamik bir diziye erişim için işlem sayısını sayın ve karşılaştırın.


peki ya sınıflar? bu, dinamik veya statik dizilerle çalışıyor ve dinamik dizileri nerede kullandığınız önemli değil - bir sınıfta veya sadece bir değişkende

dinamik dizilerle biraz daha uzun süre çalışmanın "beyinsiz" olduğu gerçeği - dizi üzerinde sınırların dışında kontrol vardır ve genellikle dinamik bellek ayırma yöneticisini çağırır

 

alsu :

1. Ancak bu durumda kalıtım, tip uzantıları, aşırı yükleme vb. mekanizmaların sağladığı kolaylıklardan kendinizi mahrum etmiş olursunuz. Kabaca söylemek gerekirse, çekiçle yapılmış bir motoru kendi elinizle vidalayabilir ve istediğiniz gibi çalıştırabilirsiniz, ancak bunun için çekiç cihazını anlamanız gerekmez: bilmeniz gereken tek şey çivi çakabilecekleridir.

2. İyi geliştirilmiş bir sınıf kitaplıkları sistemi ile, bir kullanıcı-programcının programda "1. program, işte veriler" "2. program, say" gibi bir veya iki satır yazması yeterlidir, pratik olarak ayrıntılı olarak nasıl çalıştığını merak ediyorum. Yapı yönelimli programlama ile bu elde edilemez.

1. OPP ile, sınıflarla da uğraşmak zorundasınız - tam olarak ne yapıyorlar. Sanki bir tür işlevmiş gibi. Ancak sınıflarla, tüm zinciri izlemek daha zordur, bu nedenle, genel durumda, aynı işlevsellik düzeyinde yapılarını incelemek için daha fazla zaman harcanır.

2. Yapı odaklı programlama ile daha önce birinin girdiği ayrıntılara girmeden benzer eylemleri sorunsuz bir şekilde organize edebilirsiniz.

 
IgorM :


peki ya sınıflar? bu, dinamik veya statik dizilerle çalışıyor ve dinamik dizileri nerede kullandığınız önemli değil - bir sınıfta veya sadece bir değişkende

Tamam, o zaman daha basit bir soru soracağım. Tek boyutlu ve iki boyutlu dizilerden oluşan bir değişkene erişirken işlem sayısını karşılaştırın.

Ve şimdi neredeyse hiçbir fark olmadığını mı iddia edeceksiniz?

 
Andrei01 :

Tamam, o zaman daha basit bir soru soracağım. Tek boyutlu ve iki boyutlu dizilerden oluşan bir değişkene erişirken işlem sayısını karşılaştırın.

Ve şimdi neredeyse hiçbir fark olmadığını mı iddia edeceksiniz?


Bu da bir OOP sorusu mu?

değilse, o zaman: eğer dizi statik ise, o zaman tek boyutlu bir diziye veya iki boyutlu bir diziye erişirken performansta hiçbir fark olmayacaktır; çok boyutlu bir dizinin verileri, yaklaşık olarak bir x[20] diziniz ve bir y[2][10] diziniz varmış gibi, satır satır bellekte depolanır, ardından y verileri belleğe yazılır: önce y[0 ] ve ardından fiziksel olarak x[20] gibi konumlandırılacak olan y[1]

performans gecikmesi varsa, bu çok önemsizdir ve yalnızca sınır dışı dizinin kontrolü nedeniyle ortaya çıkabilir.

dizi dinamikse - belirli derleyici üreticisine bağlıdır - bellek yöneticisi kodunun ne kadar optimize edildiği (Delphi'de, Sistem modülünün çoğu ASM'de yazılır), çünkü çok boyutlu dinamik dizi için bellek ayırma biraz daha karmaşıktır , ancak burada, genellikle sorun dinamik dizilerde değil, programcıdadır - haklı olduğu ve genellikle dinamik bir dizi için belleğin yeniden tahsisine neden olduğu sürece

Not: iletişim için teşekkürler - ama temel şeyleri yanlış anlamanıza çok fazla zaman ayıramam - kendi başınıza okumaya başlayın

 
IgorM :


Bu da bir OOP sorusu mu?

değilse, o zaman: eğer dizi statik ise, o zaman tek boyutlu bir diziye veya iki boyutlu bir diziye erişirken performansta hiçbir fark olmayacaktır; çok boyutlu bir dizinin verileri, yaklaşık olarak bir x[20] diziniz ve bir y[2][10] diziniz varmış gibi, satır satır bellekte depolanır, ardından y verileri belleğe yazılır: önce y[0 ] ve ardından fiziksel olarak x[20] gibi konumlandırılacak olan y[1]

En basit şeyleri bilmediğiniz için yanılıyorsunuz.

Herhangi bir dizinin verileri doğrusal olarak bellekte bulunur. İlkinden sonuncusuna, x[15] elemanına atıfta bulunmak için, daha sonra bu değişkeni hesaplamak için, dizinin başlangıcının adresini artı değişkenin adresi olacak ofset 15'i hesaplamanız gerekir. . İki boyutlu bir dizide, örneğin x[2][5], önce ikinci satır için ofseti hesaplamanız ve ardından buna 5. eleman için ofseti, yani iki kat daha fazla işlemi eklemeniz gerekir.