Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Haydi. Önce - sonra - yürütülebilir dosyayı, ardından - yürütülebilir dosyanın yürütülmesini tanımlayın.
Anladım. Tanımın yalnızca büyük bir projenin birleştirilmesini hızlandırdığı, ancak yürütülebilir dosyadaki kodun çalıştırılmaması gibi olmadığı ortaya çıktı.
Genel olarak, kendi kendine eğitim için, yürütme hızı açısından kodun donanım düzeyinde mümkün olan maksimum uygulanmasıyla ilgileniyorum.Hangi mimaride veya alanda olduğu önemli değil.
Tamamen bellekte çalıştırılan diller olduğunu biliyorum, bu muhtemelen en hızlı çözüm olacaktır.
Anladım. Tanımlamanın yalnızca büyük bir projenin montajını hızlandırdığı, ancak yürütülebilir dosyadaki kodun çalıştırılmaması gibi olmadığı ortaya çıktı.
Genel olarak, kendi kendine eğitim için, yürütme hızı açısından kodun donanım düzeyinde mümkün olan maksimum uygulanmasıyla ilgileniyorum.Hangi mimaride veya alanda olduğu önemli değil.
Tamamen bellekte çalıştırılan diller olduğunu biliyorum, bu muhtemelen en hızlı çözüm olacaktır.
Define hiç bir ivme vermiyor. #define FIVE 5 gibi asal sayıları tanımlamak için küçük bir istisna olabilir.
Varsayılan fikir, kodu daha okunaklı ve değiştirilmesi daha kolay hale getirmektir. Her şey. Bundan sonra işlevselliği sona erer.
Mikrodenetleyiciler ve sürücüler ya C ya da assembler ile yazılır.
Başka ne seçenekler var? Q dilini okuyan var mı?
IMHO programlama adımları))
1-hiçbir şey anlamadım
2 - Prosedürel stili anlıyorum (işlevsel bile değil, sadece bir kod ayak örtüsü
3- Fonksiyonel olarak her şeyi yazabileceğimi düşünüyorum)
4 - Anlamadığımı anlıyorum OOP
5 - OOP'yi anlıyorum
6 - Kesinlik açısından OOP'yi anlamaya devam ediyorum
7 - OOP'deki herhangi bir ağaç düğümü demetini düşünebilirim ve bunların tümü, tadına göre defans ile hashmapping ve tuzlama için
8 - tüm bunlar programlamadır, ancak türe göre katı erişime sahiptir vb.
9 - 7. maddenin kötü (karanlık taraf) olduğunu ve dünyada uygar bir ood olduğunu anlıyorum (şablonlar gibi)
10 - Havalı programcılar olduğunu düşündüğüm kişilerden giderek daha sık "OOP kötüdür", yani. yöntemlerin medeni bir kullanımı var ve her şey medeni bir şekilde yapılıyorsa her şeye ihtiyaç o kadar büyük değil evet rutin ama kod yazmanın uygulama hızı benimkinden kat kat fazla :(
11 - Modern işlevsel dillerde neredeyse iki kez OOP'nin belirli aşamalarda taklit edildiği, tüm bu işlev uzantıları vb. başka bir deyişle, işlevsel programlama yaklaşımını anlamaya başladım (3. nokta)
Genel olarak, dilin sözdiziminden gerçekten bir fark görmüyorum, ilkeler değişmiyor, katı diller var - katı diller yok. Katı olmayanları kodlamak sorunludur. Ve C++ C# RQ GO JS Ruby nedir, pek bir fark yoktur
Düşük seviyeli olanlar sözde daha hızlıdır (orada kendi çok hızlı kodunuzu standart olandan daha hızlı yazmak gerçekten mümkündür, ama neden?) - örneğin, sıralamayı standart olandan daha hızlı yazmak oldukça kolaydır, ancak zamanında sıralamanın özü hız değildir))), ancak minimum eylem sayısı ve minimum sayı eylemi her zaman en hızlı yol değildir, ancak kendi yolunda çok iyidir.
mikroişlemciler hakkında - genellikle bundan öğrenmeye başlarlar. Her ne kadar dilin özü o kadar önemli olmasa da. Yüksek seviyeli olanlar, büyük kod bölümleriyle çalışmanıza izin verir, düşük seviyeli olanlar daha evrensel veya başka bir şeydir.
OOP, bir prosedüre ilişkin bir sarıcıdır.
Yani, prosedürel dilin bir uzantısı, ancak kendi paradigması ile.
Şahsen, OOP'nin zaten üst düzey bir dili kirlettiğini düşünüyorum))
Listelenen dillerin tümü, Q hariç, üst düzey dillerdir.
Muhtemelen bu Q için düşünmedin. Q, K dilinin devamıdır.
KDB+ veritabanı Q dilinde uygulanır
Kdb+, Kx ,
C gibi değil, tamamen farklı bir paradigma var. Bence vektör mantığı var.
Ama bence burada forumda, en saygıdeğer programcılar bile bu dili duymamışlar))
0.0 evrim Q
Arthur Whitney, q programlama dilini ve kdb+ veritabanını geliştirdi. Kx Systems, Inc. tarafından yayınlandı. 2003'te q'nun ana tasarım hedefleri ifade, hız ve verimlilikti.
Onlar için uygun değil. Tasarım ödünleşimi, ayrıntılı geleneksel veritabanı programlama ortamlarından gelen programcıların kafasını karıştırabilecek kısalıktır -
örneğin, C++, Java, C# veya Python - ve bir ilişkisel VTYS. Q programlama tanrıları, ASCII çekirdek dökümlerine benzeyen programlarla eğlenirken, bu eğitim hepimiz içindir.
Q'dan evrimleşmiş APL (programlama dili) ilk olarak matematiksel bir gösterim olarak icat edilmiştir. Kenneth Iverson 1950'lerde Harvard Üniversitesi'nde
APL, 1960'larda IBM tarafından bir vektör programlama dili olarak tanıtıldı; bu, tek bir işlemde bir sayı listesini işlediği anlamına gelir.
Finans ve çok fazla sıkıntı gerektiren diğer sektörlerde başarılıydı.
APL'den A'ya mitokondriyal DNA q izleri bir+ ve k. hepsi vektörler üzerinde hızlı bir şekilde karmaşık hesaplamalar yapmak için iyi bir şekilde uyarlanmıştır.
q/kdb+ ile ilgili yeni olan şey, büyük miktarda zaman serisi verilerini ilişkisel bir paradigmada çok verimli bir şekilde işlemesidir.
Sözdizimi, SQL 92'ye benzer "seç" ifadelerine izin verir ve yerleşik işlevler koleksiyonu, eksiksiz ve güçlü bir saklı yordam dili sağlar.
q genleri ayrıca bazı lisp : q'nun temel veri yapısı bir listedir. Notasyonlar ve terminoloji farklı olsa da semboller diyagramdaki karşılıklarından alınmıştır.
APL q soyağacı da işlevsel programlamanın etkisini gösterir.
Saf işlevsel programlamayı tanıtan 1977 Turing Ödülü Dersinde, arka APL'den ilham alındı.
q tamamen işlevsel olmasa da, temel veri yapılarının, listenin ve sözlüğün bile matematiksel eşlemeler olarak ele alınması anlamında oldukça işlevseldir.
0.1 felsefe
Deneyimli q geliştiricisi, artık "geleneksel programlama" olarak adlandırılan C++, Java, C# veya Python gibi geleneksel programlama ortamlarından farklı düşünüyor. -
Sizi doğru zihniyete sokmak için, bundan böyle qbie olarak bilinen acemi q için bazı potansiyel molaları özetliyoruz.
Geleneksel veritabanı programlamasında verilerle ilgili bazı sorunları hatırlayın:
Doğru nesne-ilişkisel eşlemeyi elde etmek için büyük çaba gerekir.
Karmaşık sayısal hesaplamalar en iyi uygulama sunucusundaki veri tabanından ayrı olarak yapılır.
Geleneksel programlama tasarımının çoğu, çeşitli görünümleri doğru bir şekilde elde etmek için harcanır, kaynakları sıralamak ve çeşitli görünümleri senkronize tutmak için birçok kod satırı gerektirir.
q / kdb+'da şaşırtıcı derecede basittirler.
yorumlandı Q yorumlanır, derlenmez. Yürütme sırasında, veriler ve işlevler bellekteki bir çalışma alanında bulunur.
Geliştirme döngüsünün yinelemeleri genellikle hızlıdır çünkü test etmek ve hata ayıklamak için gereken tüm çalışma zamanı bilgileri çalışma alanında hemen kullanılabilir durumdadır.
Q programları, komut dosyaları adı verilen düz metin dosyaları olarak saklanır ve yürütülür. Tercüman değerlendirmek ve ayrıştırma rutinleri mevcuttur, böylece kontrollü bir şekilde dinamik olarak kod oluşturabilirsiniz.
türleri Q, tür denetiminin çoğunlukla göze batmayan, dinamik olarak yazılmış bir dildir.
Her değişken, o anda atanan değerin türüne sahiptir ve tür yükseltme, çoğu sayısal işlem için otomatik olarak gerçekleşir. Türler homojen listelerde işlemler sırasında kontrol edilir.
Değerlendirme Sırası q soldan sağa girildiğinde, ifadeler sağdan sola veya q tanrılarının tercih ettiği gibi soldan sağa değerlendirilir - yani fonksiyon sağındaki argümana uygulanır.
Operatör önceliği yoktur ve bir fonksiyon uygulaması parantez olmadan yazılabilir. Noktalama gürültüsü büyük ölçüde azalır.
Null ve Infinity değerleri klasik SQL'de bu değer NULL, herhangi bir tür alan için eksik verileri temsil eder ve depolama alanı kaplamaz.
q'da boş değerler yazılır ve boş olmayan değerlerle aynı alanı kaplar. Sayısal türlerin de sonsuz değerleri vardır.
Sonsuz ve sıfır değerler (çoğunlukla) öngörülebilir sonuçlarla aritmetik ve diğer işlemlere katılabilir.
Entegre G /Ç, dış dünyaya açılan pencereler gibi davranan işlev tanımlayıcıları tarafından işlenir.
Böyle bir tanıtıcı başlatıldığında, tanıtıcıya bir değer iletmek bir yazma işlemidir.
masa odaklı Eşyaları bırakmak üzerine, buraya girenler. Geleneksel dillerin aksine, q'da sınıflar, nesneler, kalıtım veya sanal yöntemler bulamazsınız.
Bunun yerine, q birinci sınıf nesneler olarak tablolara sahiptir. Öğelerin eksikliği, ilk bakışta göründüğü kadar güçlü değildir.
Nesneler, esasen q-sözlükleri tarafından modellenen yüceltilmiş kayıtlardır (yani, adlandırılmış alanları olan varlıklar). Bir tablo, girdilerin sözlüklerinin bir listesi olarak düşünülebilir.
Sıralı Listeler klasik SQL, yinelemeler olmadan sıralanmamış kümelerin bir cebiri olduğundan, satır sırası ve sütun sırası tanımsızdır,
bu da zaman serisi işlemeyi hantal ve yavaş hale getirir. q'da, veri yapıları sıralı listelere dayanır, bu nedenle zaman serileri oluşturuldukları sırayı korur.
Ek olarak, basit listeler bitişik depolamayı kaplar, bu nedenle büyük verilerin işlenmesi hızlıdır. Çok hızlı.
Sütun odaklı SQL tabloları, depolama alanına yayılmış satırlar olarak düzenlenir ve satır içindeki alanlara işlemler uygulanır. Q tabloları, bitişik depolamadaki sütunların listeleridir ve işlemler tüm sütunlara uygulanır.
Bellek içi veritabanı kdb+'ı kalıcı desteğe sahip bir bellek içi veritabanı olarak düşünebilirsiniz. Veriler q kullanılarak işlendiğinden ayrı bir saklı yordam dili yoktur.
Aslında, kdb+, dosya sistemine yazılan ve ardından bellek eşlemeli q sütunlarının serileştirilmiş listelerini içerir.
küçük bir kadın sorun için domuz satın almadı (c) halk bilgeliği
tartışmalara girmeyi başardı, dinlenme yok ))
daha fazla seçenek test edildi, MQL5 çalışma zamanı optimizasyonunu çok iyi yapıyor, ancak yine de .... akıllı bir derleyiciye güvenmek doğru değil - fazladan bir işlev çağrısı en iyi çözüm değil,
IMHO aynen öyle
ilk döngü - azalan sırayla dizi dizinleri üzerinde yineleme
alt döngü - artan endeksler üzerinde yineleme
küçük bir kadın sorun için domuz satın almadı (c) halk bilgeliği
tartışmalara girmeyi başardı, dinlenme yok ))
daha fazla seçenek test edildi, MQL5 çalışma zamanı optimizasyonunu çok iyi yapıyor, ancak yine de .... akıllı bir derleyiciye güvenmek doğru değil - fazladan bir işlev çağrısı en iyi çözüm değil,
IMHO aynen öyle
ilk döngü - azalan sırayla dizi dizinleri üzerinde yineleme
alt döngü - artan endeksler üzerinde yineleme
Fonksiyonun işlevi farklıdır. Ve belki de dizinin boyutuna iyi bir örnek değil, çünkü bu, bellek kullanımı ve erişimi açısından bir değişkene eşittir, aslında dizi bildirildiğinde doldurulmuş bir bellek hücresindeki bir değişkendir. Ancak diziden maksimum veya minimum veya sadece 10 değişkenlik bir döngü koşullarında bir hesaplama, o zaman evet buna değmez. İlk önce hesaplamak ve değiştirmek daha iyidir.
Ve anladığım kadarıyla dizi elemanları, yapı elemanları bellekte belirli adresleri olan değişkenlerdir ve bu sadece bir gösterim kolaylığıdır, A[10] ve 10 değişken A1 A2 ... A10 erişim ve boyut olarak aynıdır. tip aynı)
Ve anladığım kadarıyla dizi elemanları, yapı elemanları bellekte belirli adresleri olan değişkenlerdir ve bu sadece bir gösterim kolaylığıdır, A[10] ve 10 değişken A1 A2 ... A10 erişim ve boyut olarak aynıdır. tip aynı)
CPU komutunda fiziksel olarak varsa, o zaman hayır
dizi bir bellek parçasıdır, dizi öğelerine erişim, bu bellek parçasının başlangıcından itibaren öğe indeksinin hesaplanması ve saklanan türe göre verilerin (bayt) çıkarılmasıdır.
algoritmanın mantığı buysa, evet - bunlar dizine alınmış değişkenlerdir
genel olarak, incelenen sorunla ilgili tek doğru tavsiye girdi parametrelerini doğrulayabilir . Kaydet - verileri yığından itin. Kayıtları kaydedin. Kayıtları geri yükle. İşlev çağrısı - arayın, ardından geri dönün. Demek istediğim, arka planda birçok şey olabilir ve biz bunu göremeyiz. Bu nedenle for (int i=0; i<size; i++) kullanmak ve beklediğimiz şeyi yapması için derleyiciye güvenmemek daha güvenlidir.
CPU komutunda fiziksel olarak varsa, o zaman hayır
dizi bir bellek parçasıdır, dizi öğelerine erişim, bu bellek parçasının başlangıcından itibaren öğe indeksinin hesaplanması ve saklanan türe göre verilerin (bayt) çıkarılmasıdır.
algoritmanın mantığı buysa, evet - bunlar dizine alınmış değişkenlerdir
genel olarak, incelenen sorunla ilgili tek doğru tavsiye https://www.mql5.com/en/forum/354662/page4#comment_19039624 :
Buna katılıyorum, derleyici bir kara kutu, bu yüzden kesin olarak tahmin etmek imkansız.
Ana şey, tasarlanan her şeyin amaçlandığı gibi çalışmasıdır)))