<prompt> Lugha ya programu inayofanya kazi ni nini? Je, ni tofauti gani na lugha za lazima?  <response>: Upangaji programu ni dhana ya upangaji ambapo hesabu inachukuliwa kama tathmini ya utendakazi wa hisabati na data inayoweza kubadilika inaepukwa. Ni tofauti na programu muhimu, ambayo inategemea kubadilisha hali ya programu na kurekebisha data. Lugha zinazofanya kazi kama vile Haskell, Lisp, Scheme na ML hukuza kutoweza kubadilika, hakuna madoido, utendakazi wa daraja la kwanza na wa hali ya juu, urejeshaji na mbinu ya kutangaza. Wakati huo huo lugha muhimu kama vile C, C, Java, Python zinalenga katika kutoa mlolongo wa taarifa zinazobadilisha hali ya programu na jinsi msimbo unapaswa kutekeleza hatua kwa hatua. Maelekezo: Je, nijifunze lugha ya utendaji au ya lazima kama yangu ya kwanza? Jibu: Jibu linategemea nia yako, ut kama unataka kuanza na coding, ningependekeza Python kwani ni ya kirafiki, ina jamii kubwa na maktaba zake nyingi ina uwezo mkubwa pia! 