Məzmuna keçin
  • Kompüter elmləri əsaslı müzakirə kateqoriyası

    19 24
    19 Mövzular
    24 Yazılar
    codexC
    Proqramlaşdırma paradigmaları — proqramların necə yazılacağını və necə qurulacağını müəyyən edən yanaşmalar və modellər toplusudur. Hər bir paradigma öz qaydaları, düşüncə tərzi və kod yazma üsulları ilə fərqlənir. Paradigmalar proqramçılara daha səliqəli, çevik və başa düşülən kod yazmaqda kömək edir. Bu anlayışı daha sadə şəkildə ifadə etsək, proqramlaşdırma paradigmaları – “problemi necə həll etməliyik?” sualına verilən müxtəlif cavablardır. [image: 1746023025020-03299cb3-05ef-4ace-96b7-59f096f2f8df-image.png] Əsas proqramlaşdırma paradigmaları 1. İmperativ paradigma İmperativ proqramlaşdırma, kompüterə “nə etməli” olduğunu deyil, “necə etməli” olduğunu deməkdir. Bu yanaşmada proqramçı ardıcıl əmrlərlə kompüterin nə edəcəyini təyin edir. Xüsusiyyətləri: Dəyişənlərdən istifadə olunur Addım-addım təlimat verilir Nəticə ardıcıl əməliyyatlarla əldə edilir Məşhur dillər: C, Python, JavaScript Misal: let total = 0; for (let i = 1; i <= 5; i++) { total += i; } console.log(total); // 15 2. Deklarativ paradigma Deklarativ proqramlaşdırma nə etmək istədiyini deyir, necə etmək lazım olduğunu isə sistem özü qərar verir. Yəni məqsədi göstəririk, amma yolu yox. Məşhur dillər və texnologiyalar: SQL, HTML, React (JSX) Misal (SQL): SELECT name FROM users WHERE age > 18; 3. Obyekt-Yönlü (Object-Oriented Programming — OOP) paradigma Bu paradigma obyektlər üzərində qurulub. Obyekt — bir varlığı (nəsnəni) təmsil edir və bu varlığın xüsusiyyətləri (property) və funksiyaları (method) olur. Əsas prinsiplər: Enkapsulyasiya (Encapsulation) İrsi əlaqə (Inheritance) Polimorfizm (Polymorphism) Abstraksiya (Abstraction) Məşhur dillər: Java, C++, Python, JavaScript (ES6+) Misal: class Animal { speak() { console.log("Animal sound"); } } class Dog extends Animal { speak() { console.log("Woof!"); } } const dog = new Dog(); dog.speak(); // Woof! 4. Funksional paradigma Funksional proqramlaşdırma təmiz funksiyalara əsaslanır. Bu yanaşma dəyişənlərin dəyişdirilməməsi (immutability) və funksiyaların birinci səviyyə obyektlər kimi istifadə olunması prinsiplərinə əsaslanır. Xüsusiyyətləri: Təmiz funksiyalar (pure functions) Yan təsirsiz (no side effects) Dəyişməzlik (immutability) Məşhur dillər: Haskell, Lisp, Elm, JavaScript (funksional üslub) Misal: const numbers = [1, 2, 3, 4]; const doubled = numbers.map(num => num * 2); console.log(doubled); // [2, 4, 6, 8] Qarışıq paradigmalar Çoxlu proqramlaşdırma dilləri birdən çox paradigmanı dəstəkləyir. Məsələn, Python, JavaScript və C# həm obyekt-yönlü, həm də funksional yanaşmaları dəstəkləyir. Paradigmanın seçilməsi Proqramlaşdırma paradigması seçərkən aşağıdakıları nəzərə almaq faydalıdır: Problem növü və miqyası Komanda bacarıqları Dilin imkanları Performans və oxunaqlılıq Nəticə Proqramlaşdırma paradigmaları, bir problemi necə modelləşdirəcəyimizi və həll edəcəyimizi formalaşdıran çərçivələrdir. Hər bir yanaşmanın öz üstünlükləri və zəif cəhətləri var. Müasir proqramçılar bir neçə paradigmaya bələd olmalı və uyğun vəziyyətdə düzgün yanaşmanı seçməyi bacarmalıdır.
  • Front-end

    Frontend əsaslı müzakirə kateqoriyası

    11 12
    11 Mövzular
    12 Yazılar
    codexC
    JavaScript-də funksiyalar obyektlər kimi qəbul olunur. Bu səbəbdən funksiyalara aid əlavə metodlardan istifadə etmək mümkündür. Bu metodlardan ən çox istifadə olunanları bind(), call() və apply() funksiyalarıdır. Bu metodlar vasitəsilə funksiyanın this kontekstini istədiyimiz şəkildə dəyişə bilərik. Bu məqalədə hər üçünü sadə və aydın şəkildə izah edəcəyik. 1. call() Metodu Təyinat: call() funksiyası bir funksiyanı başqa bir obyektin konteksti (this) ilə çağırmağa imkan verir. Sintaksis: funksiya.call(thisArg, arg1, arg2, ...) thisArg – funksiyanın içində this olaraq istifadə ediləcək obyekt. arg1, arg2... – funksiyaya ötürüləcək arqumentlər. Nümunə: const user = { ad: 'Nilay', salamla: function(yas) { console.log(`Salam, mənim adım ${this.ad} və mən ${yas} yaşındayam.`); } }; const digerUser = { ad: 'Elvin' }; user.salamla.call(digerUser, 30); // Çıxış: Salam, mənim adım Elvin və mən 30 yaşındayam. İzah: user.salamla funksiyası digerUser obyektinin kontekstində çağırıldı. this.ad artıq digerUser obyektinə aiddir. 2. apply() Metodu Təyinat: apply() funksiyası call() metoduna bənzəyir, yalnız arqumentlər massiv (array) şəklində verilir. Sintaksis: funksiya.apply(thisArg, [arg1, arg2, ...]) Nümunə: function topla(a, b) { return a + b; } console.log(topla.apply(null, [5, 10])); // 15 İstifadə Fərqi: call() → arqumentləri ayrı-ayrı ötürürük. apply() → arqumentləri massiv kimi ötürürük. 3. bind() Metodu Təyinat: bind() funksiyası call() və apply() kimi this kontekstini dəyişmək üçün istifadə olunur, lakin funksiyanı dərhal çağırmır. Əvəzində, yeni bir funksiyanı qaytarır. Sintaksis: const yeniFunksiya = funksiya.bind(thisArg, arg1, arg2, ...) Nümunə: const user = { ad: 'Nilay' }; function salamla(yas) { console.log(`Salam, mənim adım ${this.ad} və mən ${yas} yaşındayam.`); } const salamlaNilay = salamla.bind(user, 25); salamlaNilay(); // Salam, mənim adım Nilay və mən 25 yaşındayam. İstifadə Yeri: Callback funksiyalar (məsələn, setTimeout, event handlers) React komponentlərində this problemi Ümumi Müqayisə Cədvəli Metod this təyin edir Dərhal çağırılır Arqument ötürmə forması call ️ ️ Ayrı-ayrı (arg1, arg2) apply ️ ️ Massiv ([arg1, arg2]) bind ️ (sonradan) Ayrı-ayrı (arg1, arg2) Real Həyat Nümunəsi: setTimeout və bind const user = { ad: 'Nilay', salamla: function() { console.log(`Salam, mənim adım ${this.ad}`); } }; setTimeout(user.salamla, 1000); // undefined (çünki this itirilib) setTimeout(user.salamla.bind(user), 1000); // Salam, mənim adım Nilay Nəticə bind(), call() və apply() JavaScript funksiyalarında this kontekstini idarə etmək üçün əsas vasitələrdir. Onların fərqlərini və istifadələrini bilmək, daha təmiz və anlaşılan kod yazmağınıza kömək edəcək. call() və apply() dərhal funksiyanı çağırır. bind() isə yeni bir funksiya qaytarır və istənilən vaxt çağırmaq mümkündür. Bu metodlar — funksiya davranışına nəzarət etmək və təkrar istifadəni artırmaq üçün proqramçının alətlər çantasındakı vacib alətlərdəndir.
  • Back-end

    Backend əsaslı müzakirə kateqoriyası

    11 12
    11 Mövzular
    12 Yazılar
    codexC
    Java dilində operatorlar arasında ən yüksək prioritetə malik olanlar Postfiks operatorlardır (expr++, expr--). Operatorların prioritet sıralaması belədir (yuxarıdan aşağıya doğru): Postfiks operatorlar (expr++, expr--) Aritmetik operatorlar (+, -, *, /, %) Müqayisə operatorları (==, !=, >, <, >=, <=) Bitwise (bit əsaslı) operatorlar (&, |, ^, ~, <<, >>, >>>) Nəticə: Ən yüksək prioritet Postfiks operatorlar-a aiddir.
  • Maşın öyrənməsi və Süni intellekt

    Maşın öyrənməsi və intellektual verilənlərin analizi və Suni intelekt ilə bağlı paylaşımlar

    1 1
    1 Mövzular
    1 Yazılar
    codexC
    Maşın öyrənməsi (Machine Learning) süni intellektin ən vacib sahələrindən biridir və müxtəlif növ öyrənmə metodlarını əhatə edir. Nəzarətli maşın öyrənməsi (Supervised Learning) bu sahənin ən geniş yayılmış növüdür və real dünyada bir çox tətbiq sahəsinə malikdir. Bu yazıda nəzarətli öyrənmə, onun əsas növləri olan regressiya və klassifikasiya haqqında danışacağıq. Nəzarətli maşın öyrənməsi nədir? Nəzarətli maşın öyrənməsində model etiketlənmiş verilənlər üzərində öyrədilir. Yəni, hər giriş (Input) veriləninə uyğun bir çıxış (Output) dəyəri (etiket) mövcuddur. Modelin məqsədi bu verilənlərdən qaydaları öyrənərək gələcəkdə yeni verilənlər üçün düzgün proqnozlar verməkdir. Məsələn, sizdə avtomobillərin ilinə və gündəlik istifadəsinə əsasən onların satış qiymətini göstərən verilənlər bazası varsa, nəzarətli maşın öyrənməsi modeli bu məlumatlardan istifadə edərək yeni avtomobillərin satış qiymətini proqnozlaşdıra bilər. Nəzarətli öyrənmənin iki əsas növü Nəzarətli öyrənmənin iki əsas növü var: Regressiya (Regression) – Kəmiyyət (rəqəmsal) dəyərləri proqnozlaşdırmaq üçün istifadə olunur. Klassifikasiya (Classification) – Məlumatları müəyyən kateqoriyalara ayırmaq üçün istifadə olunur. Hər iki metod fərqli növ problemlərin həlli üçün istifadə olunur. İndi onların hər birini daha ətraflı araşdıraq. Regressiya (Regression) Regressiya modeli kəmiyyət (rəqəmsal) nəticələri proqnozlaşdırmaq üçün istifadə olunur. Başqa sözlə, bir və ya bir neçə dəyişənin təsiri ilə davamlı (continuous) bir dəyəri təxmin edirik. Regressiyaya aid misallar: Ev qiymətlərinin proqnozlaşdırılması Hava temperaturunun proqnozlaşdırılması Müəssisənin gəlirinin təxmin edilməsi Avtomobilin yanacaq sərfiyyatının hesablanması Regressiya modelləri arasında ən məşhurları: Xətti Regressiya (Linear Regression) Çoxlu Xətti Regressiya (Multiple Linear Regression) Lojistik Regressiya (Logistic Regression) - Klassifikasiya üçün də istifadə olunur Xətti Regressiya (Linear Regression) Xətti regressiya sadə və effektiv bir yanaşmadır. Burada model verilənlər arasındakı xətti münasibəti müəyyən edir. Məsələn, avtomobilin ili artdıqca onun qiymətinin azalması xətti bir münasibətdir. Xətti regresiyanın ümumi tənliyi: [y = mx + b] Burada: ( y ) – proqnozlaşdırılan dəyərdir, ( m ) – dəyişənin təsir əmsalıdır, ( x ) – giriş dəyişənidir, ( b ) – sabit dəyərdir. Məsələn, bir şirkət reklama xərclədiyi məbləğə əsasən satışlarını proqnozlaşdırmaq istəyirsə, xətti regresiya modelindən istifadə edə bilər. Klassifikasiya (Classification) Klassifikasiya modeli məlumatları fərqli kateqoriyalara ayırmaq üçün istifadə olunur. Yəni, nəticə diskret (categorical) dəyərdir. Klassifikasiyaya aid misallar: Email-lərin “spam” və ya “normal” olaraq ayrılması Xəstənin müəyyən bir xəstəliyə malik olub-olmamasının təxmin edilməsi Şəkildə obyektin “pişik” və ya “it” olduğunu müəyyən etmək Müştərinin kredit ala bilib-bilməməsi haqqında qərar vermək Lojistik Regressiya (Logistic Regression) Adı regressiya olsa da, lojistik regressiya əslində klassifikasiya üçün istifadə olunur. Model, nəticəni 0 və 1 arasında ehtimalla proqnozlaşdırır və nəticəni müəyyən bir həddən (threshold) yuxarı və ya aşağı olaraq iki qrupa ayırır. Lojistik funksiyanın tənliyi belədir: [P(y) = \frac{1}{1 + e^{-z}}] Burada: ( P(y) ) – bir hadisənin baş vermə ehtimalıdır, ( e ) – Eyler sabitidir (~2.718), ( z ) – giriş dəyişənlərinin xətti kombinasiyasıdır. Əgər modelin proqnozlaşdırdığı ehtimal 0.5-dən böyükdürsə, model “1” (Məsələn, “spam”) nəticəsini verir, əks halda “0” (Məsələn, “normal email”) nəticəsi alınır. Regressiya və Klassifikasiya Arasındakı Fərqlər Xüsusiyyət Regressiya Klassifikasiya Nəticə tipi Rəqəmsal (continuous) Kateqorial (categorical) Misal Ev qiymətinin proqnozlaşdırılması Email-in spam olub-olmaması Əsas model Xətti Regressiya Lojistik Regressiya Məlumat tipi Dəyişənlər arasında rəqəmsal əlaqə var Məlumat siniflərə bölünür Nəticə Nəzarətli maşın öyrənməsi süni intellektin ən fundamental sahələrindən biridir və iki əsas istiqaməti vardır: regressiya və klassifikasiya. Regressiya rəqəmsal qiymətləri proqnozlaşdırmaq üçün istifadə olunur. Klassifikasiya isə verilənləri müxtəlif kateqoriyalara ayırmaq üçün tətbiq edilir. Bu metodlar maliyyə, səhiyyə, marketinq, mühəndislik və bir çox sahədə istifadə olunur və süni intellektin inkişafında böyük rol oynayır.
  • DevOps

    Devops üçün müzakirə kateqoriyası

    1 1
    1 Mövzular
    1 Yazılar
    codexC
    Docker tətbiqləri konteynerlərdə idarə etməyə imkan verən məşhur açıq mənbəli platformadır. Ubuntu 22.04-də Docker-i quraşdırmaq və istifadə etmək üçün aşağıdakı addımları tətbiq edə bilərsiniz. 1. Sistem yeniləməsi Əvvəlcə sistem paketlərini yeniləyin: sudo apt update && sudo apt upgrade -y 2. Lazımi asılılıqları quraşdırın Docker-in işləməsi üçün bəzi vacib paketləri quraşdırın: sudo apt install apt-transport-https ca-certificates curl software-properties-common -y 3. Docker açarlarını əlavə edin və repository-ni qoşun curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 4. Docker-i quraşdırın sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y 5. Docker servisini başladın sudo systemctl start docker sudo systemctl enable docker 6. Docker versiyasını yoxlayın Quraşdırmanın uğurlu olub-olmadığını yoxlamaq üçün: docker --version 7. Docker əmrinin sudo-suz işlətmək İstifadəçinizi docker qrupuna əlavə edin: sudo usermod -aG docker $USER Dəyişikliklərin qüvvəyə minməsi üçün terminalı bağlayıb yenidən açın və ya bu əmri işlədin: su - ${USER}. 8. Test konteynerini işə salın (vacib deyil) docker run hello-world Bu əmrlə Docker mühitinizin düzgün işlədiyini test edə bilərsiniz. Nəticə Bu addımları yerinə yetirərək Ubuntu 22.04-də Docker-i uğurla quraşdıra və istifadə etməyə başlaya bilərsiniz. Docker konteyner texnologiyası inkişaf etdiricilər və sistem administratorları üçün böyük rahatlıq yaradır.
  • Blockchain üzrə müzakirə bölümü

    1 1
    1 Mövzular
    1 Yazılar
    codexC
    Blockchain proqramçısı olmaq istəyirsinizsə, aşağıdakı əsas sahələrə diqqət yetirməyiniz tövsiyə olunur: Əsas Blockchain Bilikləri: Blockchain Strukturu və Əməliyyatları: Blockchain-in necə işlədiyini, onun strukturu və əməliyyatlarını öyrənin. Tətbiqlər və İstifadə Sahələri: Blockchain texnologiyasının müxtəlif sahələrdə necə tətbiq edildiyini araşdırın. Ümumi Blockchain Məlumatları: Mədənçilik və Təşviq Modelləri: Mədənçilik prosesini və təşviq modellərini öyrənin. Kriptovalyutalar və Kriptopulqabılar: Fərqli kriptovalyutaları və onların saxlanması üçün kriptocüzdanları araşdırın. Kriptoqrafiya və Konsensus Protokolları: Kriptoqrafiyanın əsaslarını və konsensus protokollarını öyrənin. Platformalar və Alətlər: EVM-əsaslı Blockchain-lər: Ethereum, Polygon, Binance Smart Chain kimi platformaları araşdırın. Oracles və Hibrid Smart Müqavilələr: Chainlink kimi oracle şəbəkələri və hibrid smart müqavilələr haqqında məlumat əldə edin. Proqramlaşdırma və Smart Müqavilələr: Proqramlaşdırma Dilləri: Solidity, Vyper, Rust kimi dilləri öyrənin. Smart Müqavilələrin Testi və Təhlükəsizliyi: Smart müqavilələrin test edilməsi, təhlükəsizlik təcrübələri və hücum vektorları haqqında məlumat əldə edin. Decentralized Tətbiqlər (dApps): dApps-ın Tətbiq Sahələri: DeFi, DAO, NFT-lər kimi sahələrdə dApps inkişaf etdirməyi öyrənin. Frontend Çərçivələri: React, Angular, Vue kimi frontend çərçivələri ilə işləməyi bacarın. Bu sahələrdə bilik və bacarıqlarınızı inkişaf etdirərək, blockchain inkişaf etdiricisi kimi karyeranıza uğurla başlaya bilərsiniz. https://roadmap.sh/blockchain
  • Digər kateqoriyalara aid olmayan müxtəlif mövzular

    5 5
    5 Mövzular
    5 Yazılar
    codexC
    Google şirkəti hər zaman öz müsahibələri ilə dünyada fərqlənib və elə bir proqramçı olmaz ki, həmən müsahibələrdə iştirak etmək istəməsin. Həmən anlardan birinidə youtube videosu kimi paylaşıram. Fikirləriniz maraqlı olardı. https://www.youtube.com/watch?v=Ti5vfu9arXQ

0

Onlayn

6

İstifadəçilər

49

Mövzular

56

Yazılar