JavaScript పుట్టుక మరియు మరణం

JavaScript బ్రౌజర్‌లో చాలా తక్కువ అధికారాలతో (privileges) నడుస్తుంది. అయినప్పటికీ, ఇది సర్వర్లు, బిల్డ్ టూల్స్ మరియు డేటాబేస్‌లను కూడా నడుపుతోంది. ఇది ముందుగా అనుకున్న ప్రణాళిక కాదు. ఇది 1995లో తీసుకున్న ఒక నిర్ణయం ఆధారంగా రూపొందించబడిన వరుసమైన ప్యాచ్‌ల (patches) ఫలితం.

2014లో, గ్యారీ బెర్న్‌హార్డ్ "The Birth and Death of JavaScript" అనే పేరుతో ఒక ప్రసంగం చేశారు. చాలా మంది దీనిని విఫలమైన ప్రవచనం (failed prophecy) గా చూస్తారు. నేను దీనిని ఆర్కిటెక్చరల్ ఘర్షణను (architectural friction) గుర్తించే ఒక డయాగ్నోస్టిక్ సాధనంగా చూస్తాను.

బెర్న్‌హార్డ్ ఒక విరుద్ధమైన మార్గాన్ని వివరించారు. JavaScript ఒక చిన్నపాటి భాషగా (toy language) ప్రారంభమైంది. బ్రౌజర్‌లో ఉన్న ఏకైక భాష కావడంతో ఇది మనుగడ సాగించగలిగింది. ఇది సాంకేతికంగా ఉత్తమమైన ఎంపిక కాకపోయినప్పటికీ, ఈ ఏకఛత్రాధిపత్యం (monopoly) వల్ల ప్రపంచంలోనే అత్యధికంగా అమలు చేయబడే భాషగా మారింది.

దీనిలోని ప్రధాన సంఘర్షణ సరళమైనది. బ్రౌజర్ కోడ్‌ను సురక్షితంగా మరియు వేగంగా అమలు చేయాలి. ఈ రెండు లక్ష్యాలు తరచుగా ఒకదానికొకటి విరుద్ధంగా ఉంటాయి.

2014లో, WebAssembly JavaScript స్థానాన్ని భర్తీ చేస్తుందని అంచనా వేయబడింది. కానీ అది జరగలేదు. WebAssembly అనేది Figma లేదా Google Earth వంటి వాటికి స్థిరంగా మరియు ఉపయోగకరంగా ఉంది. అయినప్పటికీ, ఒక అప్లికేషన్ లాంగ్వేజ్ (application language) గా ఇది JavaScript స్థానాన్ని భర్తీ చేయలేదు.

దానికి బదులుగా, JavaScript రూపాంతరం చెందింది. TypeScript, bundlers మరియు Deno లేదా Bun వంటి కొత్త రన్‌టైమ్‌లు (runtimes) బెర్న్‌హార్డ్ గుర్తించిన సమస్యలను పరిష్కరించడానికి చేసిన ప్రయత్నాలే.

JavaScript నేర్చుకోవడాన్ని నివారించడానికి ఈ ప్రసంగాన్ని ఉపయోగించకండి. మీకు నిజంగా పెర్ఫార్మెన్స్ సమస్య ఎదురయ్యే ముందు, WebAssemblyకి మారడాన్ని సమర్థించుకోవడానికి దీనిని వాడకండి.

మీ స్టాక్ (stack) గురించి ఈ క్రింది ప్రశ్నలను అడగడానికి దీనిని ఉపయోగించండి:

• ఈ సమస్యకు ఇది ఉత్తమ పరిష్కారం కాబట్టే నేను ఈ టూల్‌ను ఉపయోగిస్తున్నానా? • ఈ సందర్భంలో పనిచేసే ఏకైక సాధనం కాబట్టే నేను దీనిని ఉపయోగిస్తున్నానా? • నా టూల్స్ యొక్క సంక్లిష్టత నిజమైన సమస్యను పరిష్కరిస్తుందా లేదా దానిని వేరే చోటికి మారుస్తుందా? • నేను ఈరోజు మొదటి నుండి ప్రారంభిస్తే, దీనినే ఎంచుకుంటానా?

మీరు సర్వర్‌లో TypeScript ఉపయోగిస్తే, మీకు టైప్ సేఫ్టీ (type safety) లభిస్తుంది కానీ కంపైలేషన్ ఓవర్‌హెడ్ (compilation overhead) పెరుగుతుంది. మీరు Next.js ఉపయోగిస్తే, ఫీచర్లు లభిస్తాయి కానీ క్యాషింగ్ సంక్లిష్టత (caching complexity) పెరుగుతుంది. ఇవి నిజమైన లాభనష్టాలు (trade-offs).

సమస్య నిజానికి తప్పుడు వినియోగం వల్ల జరిగినప్పుడు, భాషను నిందించడం అనేది అత్యంత సాధారణ తప్పు. మీరు ఈవెంట్ లూప్‌ను (event loop) బ్లాక్ చేసే భారీ సింక్రోనస్ కోడ్‌ను (heavy synchronous code) రాస్తే, సమస్య మీదే తప్ప JavaScriptది కాదు.

ఏదో ఒక మ్యాజిక్ రీప్లేస్‌మెంట్ కోసం వెతకడం ఆపండి. మీ అసలు అడ్డంకులను (bottlenecks) కొలవడం ప్రారంభించండి.

మూలం: https://dev.to/jtorchia/the-birth-and-death-of-javascript-2014-que-sigue-siendo-verdad-y-que-ya-no-14dk