Benim yaklaşımım. Çekirdek - Motor. - sayfa 135

 
Реter Konow :

Başka bir sorun var. Sınırlı çekirdek elemanlar ve parametreler. Çözümün ne olması gerektiğini biliyorum. Henüz yapmadım.

Bu yüzden soruyorum. Çekirdeğe dikilmiş 21 satırınız varsa, bu çok iyi değil ve bu şekilde düzeltemezsiniz.

Peter Konow'un fotoğrafı.

Numara. Bu, yapıcı için yazılan harici koddur. Masayı yeniden üretir. Sonra butona tıklıyorum ve tüm bağlantı dosyaları ve motor için önyükleme çekirdeği yazdırılıyor. Sonra her şey çalışır.

Anladığım kadarıyla bu, otomatik bağlantı kodu artı çekirdek kodunun bir kısmını üreten bir otomatik oluşturucu. İlginç bir karar.

 
Vasiliy Sokolov :

Henüz kontrol etmedim.

Benim için çalışıyor. Ancak, bir durdurma tetiklendiğinde satırı kapatmakla ilgili bir sorun var gibi görünüyor. Bazen bir satır kalır. Bu yazdığım kodda kapanan siparişleri tespit etme sorunudur. Tablo burada işe yaramaz.

 
Vasiliy Sokolov :

1. Bu yüzden soruyorum. Çekirdeğe dikilmiş 21 satırınız varsa, bu çok iyi değil ve bu şekilde düzeltemezsiniz.

2. Anladığım kadarıyla bu, otomatik bağlantı kodu artı çekirdek kodunun bir kısmını üreten bir otomatik oluşturucu. İlginç bir karar.

1. Kesinlikle. Bir kurucu sınırlı sayıda elemana sahip olabilir. Bu nedenle, dinamik bir tablo sınırlı sayıda satırdan oluşmalı, ancak aynı zamanda sınırsız olmalıdır. Tek çözüm, özel eklenen parametreler için diziler ve değerlerinin tablo hücreleri arasında kaydırılması.

2. Evet. Yapıcı, sağladığınız koda dayalı olarak motor için bir çekirdek oluşturur. + bağlantı dosyalarını yazdırır. Ardından Kernel'i motora (DRIVE) yerleştiriyorum. Bundan sonra, motor istenen GUI'yi oynatabilir. Eşleştirme dosyaları Expert Advisor'a bağlanır ve onunla etkileşime girmeye başlar.

 

Son olarak asılsız olmamak için o "Çekirdek"ten bir örnek vereceğim. Daha doğrusu, bir önyükleme dosyasıdır. Birkaç çekirdek var.

KIB koduna göre otomatik olarak yazdırıldığını hatırlatmama izin verin. Daha sonra motora yerleştirilir. Ardından, motor onunla çalışır.

Dosyalar:
 
Реter Konow :

Nikolai, objektif konuşalım. Örneğin, daha önce ele aldığım CCanvas sınıfını ele alalım. Bu yüzden tüm fonksiyonları oradan aldım ve çıkardım. Onları sınıf sarmalayıcıdan bağımsız hale getirdi. Ne kötüleşti? Onlarla çalışmak daha kolay hale geldi. Bu fonksiyonları kullanarak animasyon yaptım. Ondan önce, bu sınıfla neredeyse hiç animasyon görmemiştim.

Peki neden bu zarf?

Ayrıca tuval üzerine çiziyorsunuz. Sadece belirli bir işlevi çağırabilir ve çizebilirsiniz. Ama hayır. Döndün, döndün ve döndün. Öyleyse açıkla - neden?

Evet, çünkü mega uygun. Ancak kendiniz kullanmaya başlayana kadar anlamanız çok zor.
Ve bu bir sarmalayıcı değil, yalnızca özellik ve parametre listesinin görünürlüğü nedeniyle düzenleyicide kullanılması uygun olmayan, aynı zamanda diğer programlarda belirli bir modül olarak düzenlenmesi ve kullanılması uygun olan ayrı bir çok işlevli öğedir.
 
Nikolai Semko :
Evet, çünkü mega uygun. Ancak kendiniz kullanmaya başlayana kadar anlamanız çok zor.
Ve bu bir sarmalayıcı değil, yalnızca özellik ve parametre listesinin görünürlüğü nedeniyle düzenleyicide kullanılması uygun olmayan, aynı zamanda diğer programlarda belirli bir modül olarak düzenlenmesi ve kullanılması uygun olan ayrı bir çok işlevli öğedir.

Beni rahat ettirecek şekilde nasıl düşüneceğimi bilmiyorum. Bu nedenle, benim için uygun değil. Sarın, nesne yönelimini gösterin. Gerektiğinde ve gerekmediğinde sınıflandırın...

Kişi, OOP'nin hizmet etmesi gereken mekanizmanın önünde durduğu izlenimini edinir. Yani, mekanizma bütünlük için ve dolayısıyla bloklarının en az sayısı için çaba göstermelidir. Ve OOP, bu blokları herhangi bir nedenle üretmeye zorlar. Bu nedenle mekanizmaların yapısı yırtılır ve iyi çalışmazlar. Ve daha da kötü gelişirler.


Nikolai, mega mekanizmalar yaratmaya başlayın ( Canvas sınıfından 10 kat daha büyük) ve OOP'nin nerede ve nasıl uygunsuz olduğunu anlayacaksınız.

 
Реter Konow :

Beni rahat ettirecek şekilde nasıl düşüneceğimi bilmiyorum. Bu nedenle, benim için uygun değil. Sarın, nesne yönelimini gösterin. Gerektiğinde ve gerekmediğinde sınıflandırın...

Kişi, OOP'nin hizmet etmesi gereken mekanizmanın önünde durduğu izlenimini edinir. Yani, mekanizma bütünlük için ve dolayısıyla bloklarının en az sayısı için çaba göstermelidir. Ve OOP, bu blokları herhangi bir nedenle üretmeye zorlar. Bu nedenle mekanizmaların yapısı yırtılır ve iyi çalışmazlar. Ve daha da kötü gelişirler.

Nikolai, mega mekanizmalar yaratmaya başlayın ( Canvas sınıfından 10 kat daha büyük) ve OOP'nin nerede ve nasıl uygunsuz olduğunu anlayacaksınız.

Sözleriniz tek bir şey söylüyor:


 
Bir zamanlar şanlı bir programcı varmış, kendine bir tablet programlamış, kederi bilmiyordu, mutluydu ama oop'un büyük bir rakibiydi.
Yıllar geçti, programcımız yaşlandı ve şimdi saatinin geldiğini hissediyor ve torunlarını, akrabalarını çağırıyor ve diyor ki:
- Bana bir dizüstü bilgisayar getir, ayyy kullanarak bir işaret yapacağım!
Herkes şaşırdı ve dedi ki:
- Hadi ama, tüm hayatın boyunca burcun üzerinde çalıştın, kusura bakma. Ne oldu?
Ve programcı diyor ki:
- Burada oops ile bir işaret yapacağım, sonra öleceğim ve bir oop-shnik daha az olacak.
 
Nikolai Semko :

...

Nikolai, OOP'ye olan aşkının soyut sebepler dışında neredeyse hiçbir şeyle haklı çıkmadığı hiç aklına geldi mi?

Diyelim ki, bu OOP'yi kullanarak dev mekanizmalar yarattıysanız, neden bu kadar çok ihtiyacınız olduğu açık olurdu. OOP'ye neden ihtiyacınız olduğunu özellikle doğrularsınız. Ancak, nispeten küçük mekanizmalar yaratıyorsunuz. Bir veya başka bir yaklaşımın dezavantajları ve avantajları hakkında sonuç çıkarmak için yeterli kod yoktur. Ama hala OOP hakkında konuşmaya devam ediyorsun. OOP'nin sadece bir araç olduğu ve kendi başına bir anlam ifade etmediği göz önüne alındığında. Yani yapılacak bir mekanizma yoksa OOP'a gerek yoktur. Ve eğer bir mekanizma varsa, o zaman yeterince ciddi olmalı, böylece onu yaratırken OOP gerekli.

Çoğu FKÖ savunucusu ciddi bir şey yapmıyor. Sadece küçük eşyalar. Ancak, FKÖ'ye olan inançları sarsılmaz. Çok daha ciddi mekanizmalar yaratan diğerleri, OOP'nin büyüklüğü hakkında çok daha az bağırıyorlar. Hatta bazıları eleştiriyle konuşuyor (birkaç kez oldu).

Yani, argümanınız sadece teoriyle değil, pratikle de desteklenmelidir. Örneğin, çözümleri ve pratikteki nüanslarını karşılaştırabildiğimiz için OOP'nin GUI geliştirmedeki avantajları hakkında Anatoly ile tartışabilirim. Ama seninleyken, tartışmayı geri çeviremem çünkü onu anlamayacaksın. Duyacaksınız ama anlamayacaksınız (alınma). Ve Anatoly, tam tersine, çok iyi anlayabilir. Küresel mekanizmalar yaratma deneyimindeki farklılık, yanlış anlaşılmanın ana nedenidir.

not. Bir uygulayıcı olarak size şunu söyleyeceğim: Yaklaşım, belirli bir programcının beyin potansiyelini en üst düzeye çıkaracak şekilde olmalıdır. Kendim için böyle bir yaklaşım buldum.

 
Реter Konow :


Sırf büyük bir şey yayınlamıyor olmam, büyük bir şeyim olmadığı anlamına gelmez. Sadece küçük şeyleri paylaşıyorum.
Ben de uzun süre OOP paradigmasına direndim. Henüz OOP yokken programlamayı öğrendim. Ve büyük bir projenin prosedürel kodunda boğulmaya başladığımda OOP benim için zorunlu bir gereklilikti. Ve pratikte OOP'nin tüm güzelliğini ve gücünü fark ettiğimde, prosedürel programlamada kaybettiğim zaman için çok üzgünüm.