Sema Kuna watu wanaosema JavaScript sio programming language kwasababu JavaScript ilianza kama lugha ya scripting, haitumiki kwenye system programming,Haina static typing(ni dynamically typed), ilitengenezwa kwa haraka sana(kwahiyo huonekana kama lugha ya majaribio), inafanya Kaz ndani ya browser tu.
Ila JavaScript ni programming on kwa upande mwingine kwasababu Ina variables,loops, function,oop,event driven pia ni turing complete kwa maana inaweza kutatua changamoto za kihesab
Japo it's a debate maana watu wengi hupingwa this isn't a Programming language
Ni programming language na hakuna mjadala juu ya hilo, shida ya JavaScript ni haiko stable kwasababu ya updates zinazofanyika mara kwa mara licha ya kuwa na community ya kutosha worldwide.
Na ukiangalia sana hii language utagundua lengo lao halikua baya kwa maana waliamua kutengeneza kitu ambacho Kila programmer anao uwezo wa kukiown na kukifanya kuwa cha kwake.
Na ndio maana utaona wao wanakuonesha msingi wa namna mambo yanavyoweza kufanyika ila hawakulazimishi wewe kufanya kama hivyo na badala yake wanakuruhusu uweze kufanya kwa namna nyingine yoyote as long as hautoki nje ya syntax zake na Sheria za msingi za hiko unachokifanya.
Kwahiyo ni flexible language na hii nayo huwa inachangia sana kuifanya hii lugha iwe ngumu kwa baadhi ya watu kwa maana kama hauko vizuri kwenye kujenga logic basi hautaweza kufurahia kucode kwenye JavaScript kwa maana hata OOP yake haiko kwa namna ambayo iko kwenye lugha zingine zinazofuata mtindo huo, kwa maana JavaScript haina interface class so hata abstraction kufanyika kwenye JavaScript ni ngumu hasa kama hauko vizuri kilogic.
Hata encapsulation nayo inafanyika kiujanja janja ingawa naona kwenye ES6 wameintroduce private identify kwa kutumia # 🤣.
The same kwenye generics na collections huwezi kusolve kama huna knowledge ya hayo mambo, kwasababu logics zake unatengeneza mwenyewe tofauti na kwenye lugha zingine kwamfano Java.
Kutokana na haya yote ndio maana typescript ikawa introduced na utaona yenyewe ni statistically typed, lakini pia iko na interface class kitu inayofanya iwe rahisi kusolve generics na collections, licha ya haya yote ila bado typescript nayo ni single threading kwahiyo issue ya concurrency bado ni changamoto hasa kwa high computation tasks, even though kuna event loop or web workers na service workers ila kati ya hizo option ni moja tu ndio ambayo inaingiliana moja kwa moja na DOM ambayo ni event loop ila zingine zote ni lazima wewe uziandikie code za kuziunganisha na DOM kwa maana ya messaging pass, so tunarudi kule kule ya kwamba kama hauko vizuri na utashindwa kuhandle hizo code zako vizuri basi unaweza ukasababisha changamoto either kwenye memory au hata kufanya mfumo uweze kufreeze.
But all in all hao wanaoleta huo mjadala itabidi tuwapige kwasababu misingi ya programming language iko wazi na JavaScript imekithi vipengele vyote.