C కోడ్లోని మెమరీ సేఫ్టీ బగ్లను తొలగించడానికి, TrapC ఫోర్క్ని ప్రయత్నించండి
ప్రత్యేకమైనది అన్నింటికంటే, C మరియు C++ ప్రోగ్రామర్లు మెమరీ భద్రతను ప్రోత్సహించడంలో పాల్గొనడానికి రస్ట్ నేర్చుకోవాల్సిన అవసరం లేదు.
నుండి మాతో రిమోట్గా మాట్లాడుతున్నారు W2140 కాన్ఫరెన్స్ బ్యాంకాక్, థాయిలాండ్లో – ఈరోజు ప్రారంభమైంది – రాబిన్ రోవ్, మాజీ కంప్యూటర్ సైన్స్ ప్రొఫెసర్, ప్రొడక్ట్ డిజైనర్ మరియు గ్రాఫిక్స్ నిపుణుడు, ట్రాప్సి అని పిలువబడే సి ప్రోగ్రామింగ్ భాష యొక్క మెమరీ-సేఫ్ ఫోర్క్ను ప్రకటించాలని యోచిస్తున్నారు. క్రాష్ చేయని సాఫ్ట్వేర్ను రూపొందించడంలో డెవలపర్లకు సహాయం చేయడమే దీని లక్ష్యం.
TrapC కోడ్ C/C++ కోడ్ని పోలి ఉంటుంది, కానీ రోవ్ ప్రకారం, ఇది మెమరీ సురక్షితం. అంటే, మీ పాయింటర్లు భద్రతా రంధ్రాలు, బఫర్ ఓవర్రన్లు లేదా మెమరీ లీక్లను ఉత్పత్తి చేయలేవు. ప్రోగ్రామింగ్ లాంగ్వేజ్ అదే అప్లికేషన్ బైనరీ ఇంటర్ఫేస్ (ABI)ని ఉపయోగిస్తుంది కాబట్టి Cకి అనుకూలంగా ఉండేలా రూపొందించబడింది. మరియు ఇది రస్ట్ కంటే సురక్షితమైనది, ఎందుకంటే దీనికి “అసురక్షిత” కీవర్డ్ లేదు, అదే సమయంలో నేర్చుకోవడం కూడా సులభం.
ట్రాప్సి కంపైలర్ 2025లో రోవ్ స్టార్టప్ ట్రాసెక్ ద్వారా ఉచిత ఓపెన్ సోర్స్ సాఫ్ట్వేర్గా విడుదల చేయబడుతుందని భావిస్తున్నారు, ఇది రాబోయే మెమరీ-సేఫ్ సి-ప్రక్కనే ఉన్న భాషకు మద్దతు ఇస్తుంది మరియు ఏదో ఒక సమయంలో కలిగి ఉంటుంది ఒక వెబ్సైట్ మీ డొమైన్ పేరుతో అనుబంధించబడింది.
“ఫిబ్రవరిలో, వైట్ హౌస్ C మరియు C ++ లలో మెమరీ భద్రత గురించి ఏదైనా చేయవలసి ఉందని లేదా రస్ట్కు వెళ్లాలని ప్రకటించింది” అని రోవ్ చెప్పారు. ది రికార్డ్.
“మరియు ఆ సమయంలో, నేను C మరియు C++ కమిటీలలో సభ్యుడిని, మరియు మీరు ఊహించినట్లుగా, ఆ పరిశ్రమలో చాలా ప్రకంపనలు సృష్టించాయి.”
C మరియు C++ కమ్యూనిటీలలో చాలా చర్చ జరిగింది, ఎందుకంటే ఏ భాష కూడా మెమరీ సురక్షితం కాదు మరియు అది చేయవచ్చనే సందేహం ఉంది. ది సురక్షిత C++ ప్రతిపాదన C++ సంఘం నుండి వచ్చిన ప్రతిస్పందనలలో ఒకటి.
రోవ్ ప్రకారం, C++ సృష్టికర్త Bjarne Stroustrup, తాను పని చేస్తున్నానని చెప్పాడు. ప్రొఫైల్స్ [PDF] మరియు నేను దానిని కొనసాగించాలని కోరుకున్నాను.
“మరియు నేను జార్న్ని ప్రేమిస్తున్నాను, కానీ ప్రొఫైల్లు సరైన సమాధానం అని నేను అనుకోను” అని రోవ్ చెప్పాడు. “మరియు సి సంఘంలో, ప్రతిస్పందన మరింత తక్కువగా ఉంది [clear]. ఏమి చేయాలో నిజంగా ప్రణాళిక లేదు.”
చేస్తున్నాను ఏదో మెమరీ భద్రతను మెరుగుపరచడం అనేది జాతీయ భద్రతా సమస్యగా మారింది, దీనికి వైట్ హౌస్, ఫైవ్ ఐస్ ఇంటెలిజెన్స్ ఏజెన్సీలు, ఫెడరల్ అధికారులు మరియు U.S. సైబర్ సెక్యూరిటీ అండ్ ఇన్ఫ్రాస్ట్రక్చర్ ఏజెన్సీ మద్దతు ఇస్తుంది. జీరో-డే ఎక్స్ప్లోయిట్లలో ఉపయోగించిన CVEలలో దాదాపు 75% మెమరీ సేఫ్టీ బగ్లు ఉన్నాయి. Google ప్రకారం. మరియు పెద్ద కోడ్బేస్లలోని 70% తీవ్రమైన దుర్బలత్వాలు ఈ బగ్లకు ఆపాదించబడతాయి.
C మరియు C++ మెమరీ సేఫ్టీ బగ్ల యొక్క సాధారణ వనరులు ఎందుకంటే అవి మాన్యువల్ మెమరీ నిర్వహణపై ఆధారపడతాయి. ప్రయోజనం, సాధారణంగా చెప్పాలంటే, చెత్త సేకరణ అని పిలువబడే ప్రక్రియ ద్వారా మెమరీని నిర్వహించే పైథాన్ లేదా జావా వంటి భాషల కంటే మెరుగైన పనితీరు మరియు తక్కువ ఓవర్హెడ్. మాన్యువల్ మెమరీ నిర్వహణ యొక్క ప్రతికూలత ఏమిటంటే, ఇది బఫర్ ఓవర్ఫ్లోలు మరియు ఉచిత తర్వాత ఉపయోగించడం వంటి మెమరీ-సంబంధిత బగ్లకు దారితీస్తుంది.
“కాబట్టి మార్చిలో నేను C++ స్టాండర్డ్స్ గ్రూప్ మీటింగ్లో టోక్యోలో ఉన్నాను” అని రోవ్ చెప్పాడు. “ఇది స్పష్టంగా ఉంది, [memory safety] ప్రజలు అనేక ఇతర విషయాలు పని చేస్తున్నప్పటికీ అది ఇప్పటికీ అక్కడ చర్చించబడుతోంది. ఆపై నేను దాని గురించి ఆలోచించడం మొదలుపెట్టాను మరియు నేను అనుకున్నాను, ‘సరే, C++ని పరిష్కరించడం చాలా కష్టంగా ఉండటానికి కారణం Cతో వెనుకకు అనుకూలత.
C++లో అతిపెద్ద మెమరీ భద్రతా లోపాలు C నుండి సంక్రమించాయని రోవ్ చెప్పారు. “కాబట్టి C++ మెరుగైన దోష నిర్వహణను కలిగి ఉండేలా మినహాయింపులను ఎలా మెరుగుపరచాలనే దానిపై మార్చి సమావేశంలో చర్చ జరిగింది.” మినహాయింపులు కోడ్లో లోపాలను నిర్వహించడానికి ఒక మెకానిజం.
గేమ్ల డెవలపర్లు, ఎంబెడెడ్ సిస్టమ్లు మరియు అధిక-లభ్యత సర్వర్లు సాధారణంగా మినహాయింపుల వినియోగాన్ని నిషేధిస్తాయి ఎందుకంటే అవి నిర్ణయాత్మకమైనవి కావు మరియు ఇతర పనితీరు-సంబంధిత సమస్యలను కలిగి ఉంటాయి, రోవ్ వివరించారు.
“ఈ మినహాయింపులు నిషేధించబడిన ప్రదేశాలు చాలా తప్పు-ప్రూఫ్ కావాల్సిన ప్రదేశాలు” అని అతను చెప్పాడు. “ఆపై నేను అక్కడ జరుగుతున్న కొన్ని పనిని చూసి, ‘సరే, దీన్ని పరిష్కరించడానికి ప్రయత్నించే బదులు, లోపం నిర్వహణ పని చేసే విధానాన్ని మనం మార్చినట్లయితే, లోపాలు మినహాయింపు ద్వారా కాకుండా డిఫాల్ట్గా ట్రాక్ చేయబడతాయి? ‘”
ప్రస్తుతం, C మరియు C++లో, మీరు ఫైల్ను తెరవడానికి ప్రయత్నించి, ఫైల్ తెరవనప్పుడు ఏమి జరుగుతుందో నిర్వహించడానికి ఎర్రర్ కండిషన్ను కోడ్ చేయకపోతే, ప్రోగ్రామ్ క్రాష్ అయ్యే అవకాశం ఉందని రోవ్ వివరించారు.
కానీ అది అలా ఉండవలసిన అవసరం లేదు. “మీరు C లో ఫైల్ను తెరిచి, ఫైల్ తెరవనప్పుడు ఏమి జరుగుతుందో చెప్పకపోతే, అది పరోక్షంగా పిలవబడే ఒక రకమైన లోపం పరిస్థితిని సృష్టిస్తుందా?” అన్నాడు.
దీంతో మెమొరీ మేనేజ్మెంట్ గురించి అందరూ ఆరాటపడుతున్నారని ఆయన అన్నారు.
“మనం మెమరీని ఉపయోగించలేమని ప్రజలు చెప్పారు, మేము C++లో పాయింటర్లను తనిఖీ చేయలేము, ఎందుకంటే ఇది చాలా కష్టం,” అని అతను చెప్పాడు. “మరియు వారు నిజంగా ఇది చాలా కష్టం అని అర్థం కాదు, వారు చాలా నెమ్మదిగా అని అర్థం. వారు దీన్ని బాగా చేయడం చాలా కష్టం అని అర్థం.”
దీనికి రోవ్ యొక్క సమాధానం ఏమిటంటే, కంపైలర్లో మరింత తెలివితేటలను ఉంచడం, తద్వారా తనిఖీ చేయని పాయింటర్లు హద్దులు దాటి వెళ్లలేని చోట, దాని కోసం తనిఖీ చేయకూడదని కంపైలర్కు తెలుసు. మరియు ఇది అనవసరమైన తనిఖీలను నివారించడం ద్వారా పనితీరును మెరుగుపరిచింది.
“ఆపై నేను అనుకున్నాను, ‘సరే, కంపైలర్కు పాయింటర్లు ఎప్పుడు సరిగ్గా ఉంటాయో ఇప్పుడు తెలుసు కాబట్టి, కంపైలర్ హద్దులు దాటి వెళ్ళిన ఏదైనా పాయింటర్ను రద్దు చేస్తే ఏమి చేయాలి?” అతను చెప్పాడు.
“కాబట్టి C మరియు C++ లలో, మీరు బఫర్కు పాయింటర్ని కలిగి ఉంటే మరియు మీరు దానిని జోడిస్తే, మీరు దానిని ముందుకు పెంచుతారు, ఏదో ఒక సమయంలో మీరు ముగింపు నుండి నిష్క్రమిస్తారు మరియు మీరు చివరలో నిష్క్రమిస్తారో లేదో తనిఖీ చేయడానికి మీరు జాగ్రత్తగా ఉండకపోతే, అది భద్రతా ఉల్లంఘన లేదా ఏదైనా భయంకరమైనది కావచ్చు.
“మరియు నేను అనుకున్నాను, ‘సరే, కంపైలర్కు ముగింపు ఎక్కడ ఉందో తెలుసు కాబట్టి, అది ముగింపును విడిచిపెట్టినప్పుడు, పాయింటర్ సున్నాకి వెళితే?’ మరియు ఇది వైల్డ్కార్డ్ పాయింటర్ కంటే చాలా సులభం ఎందుకంటే మీరు పాయింటర్ సున్నా కాదా అని సులభంగా తనిఖీ చేయవచ్చు.
“మరియు మేము ట్రాప్సితో కలిసి పని చేస్తున్న దాని యొక్క సారాంశం, ఈ సి-లాంటి భాషను సృష్టించడానికి, ప్రతిదీ చాలా చక్కగా కనిపించే చోట, పాయింటర్లు ప్రాథమికంగా భిన్నమైన రీతిలో పని చేస్తాయి, ఇది చాలావరకు పారదర్శకంగా ఉంటుంది. మరియు లోపం నిర్వహణ పని చేస్తుంది కొన్ని మార్గాల్లో ఇది ప్రాథమికంగా భిన్నంగా ఉంటుంది, కానీ చాలా వరకు పారదర్శకంగా ఉంటుంది.”
ప్రతిపాదనలను పర్యవేక్షిస్తుంది మరియు మార్పులను ఆమోదించే C++ కమిటీతో రోవ్ యొక్క అనుభవం, ప్రస్తుతం ఉన్న బ్యూరోక్రాటిక్ ప్రక్రియ ద్వారా మెమరీ భద్రత మార్పులను అమలు చేయడానికి చాలా సమయం పడుతుందని అతను విశ్వసించాడు.
C++ కోసం GUI లైబ్రరీని ప్రతిపాదించిన తర్వాత, కమిటీలో చేరి పేపర్ రాయమని సలహా ఇచ్చారని చెప్పారు. అతను చేరినప్పుడు, “కమిటీలో అనుభవజ్ఞులైన చాలా మంది వ్యక్తులు నాకు నిజంగా తెలియదని నాకు వ్రాశారు, కానీ వారు నన్ను తమ అధీనంలోకి తీసుకోవాలని ప్రయత్నిస్తున్నారు మరియు ‘ఏదైనా పాస్ కావడానికి పదేళ్లు పడుతుందని అర్థం చేసుకోండి. కమిటీ.’ మీకు తెలుసా, వారు నన్ను నిజంగా ఒప్పించారు.”
కమిటీలో ఉండి, చాలా మంది తెలివైన వ్యక్తులతో ఇంటరాక్ట్ అయిన తర్వాత, “వావ్, ఈ సమస్యను పరిష్కరించడానికి నేను నిజంగా ఒక స్పష్టమైన మార్గాన్ని చూడగలను, పరిష్కరించలేమని అందరూ అనుకునే దానికంటే నేను అనుకున్నాను” అని రోవ్ చెప్పారు.
ట్రాప్సి ఒక కమిటీకి సమర్పించిన ప్రతిపాదన కంటే సి భాష యొక్క ఫోర్క్గా ఉండటానికి కారణం ఏమిటంటే, బ్యూరోక్రాటిక్ ప్రక్రియ దాని మాయాజాలం కోసం మేము ఒక దశాబ్దం వేచి ఉండగలమని రోవ్ భావించడం లేదు.
కాబట్టి మేము ఇక్కడ ఉన్నాము. మరియు ఇక్కడ TrapC కోడ్ యొక్క ఉదాహరణ:
// darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; // TrapC implicitly zeros, no dirty memory int success = 0;// In C, buffer overwrite corrupts success strcpy(buff,argv[1]); // TrapC cannot overrun, strcpy safe if(!strcmp(buff,"s3cr8tpw")) { success = 1; } if(success) // TrapC blocked strcpy overwrite, success good { printf("Welcome!\n"); } return !success; } // trapc_ptr.c int main() { const char* ptr = "Hello World"; // 12 char wide while(ptr) // No buffer overrun with TrapC { printf("%c",*ptr); // print one char at a time ptr++; // Steps off the end: TrapC nulls ptr! } // Do NOT attempt this in C, will segfault! assert(ptr == 0); return 0; } // trapc_array.c int score[10]; printf("%i",score[-1]); // TrapC will not allow access for(int i = 0;i <= INT_MAX;i++) // C Undefined Behavior { printf("%i",i); } // In C, above code is an infinite loop, will not stop. // TrapC blocks i++ overflow wrap-around, stops. // TrapC will fail-safe, call error handler if defined.
ట్రాప్సి గురించి రోవ్ యొక్క చాలా ఆలోచనలు ఎంబెడెడ్ సిస్టమ్ల కోసం వ్రాత అవసరాల ద్వారా మార్గనిర్దేశం చేయబడ్డాయి.
"నేను దేశం యొక్క ట్రాఫిక్ నియంత్రణ వ్యవస్థ కోసం భద్రత-క్లిష్టమైన ఎంబెడెడ్ సిస్టమ్లపై పని చేసాను" అని రోవ్ చెప్పారు. "నేను USలో ట్రాఫిక్ లైట్లను నియంత్రించే C++లో నిజ-సమయ Linux సాఫ్ట్వేర్ను వ్రాశాను. మరియు నా ఆలోచన చాలావరకు దాని ద్వారా రూపొందించబడింది, ఎందుకంటే మీరు C++లో భద్రతా-క్లిష్టమైన ఎంబెడెడ్ సిస్టమ్లను నిర్మిస్తున్నప్పుడు, మీరు అలా చేయరు. మినహాయింపులను ఉపయోగించండి, స్పష్టంగా.
"మీరు వారసత్వాన్ని నివారించడానికి కూడా ప్రయత్నిస్తారు, ఖచ్చితంగా మొబైల్ వారసత్వం లేదు, మీరు టెంప్లేట్లకు దూరంగా ఉండటానికి ప్రయత్నిస్తారు, మీరు ఆపరేటర్ ఓవర్లోడింగ్ నుండి దూరంగా ఉండటానికి ప్రయత్నిస్తారు.
"మీరు ఎవరితో మాట్లాడుతున్నారనే దానిపై ఆధారపడి ప్రజలు C++ని ఆసక్తికరంగా లేదా చాలా క్లిష్టంగా మార్చగలరని భావించే అనేక లక్షణాలు. క్లిష్టమైన భద్రతా సమస్యలపై [programming]మేము దీన్ని చేయము, ఎందుకంటే మనం చాలా సూక్ష్మంగా మరియు జాగ్రత్తగా ఉండాలి కాబట్టి మనం దేనినీ మరచిపోకూడదు.
"ఇది నాకు నిజంగా మార్గనిర్దేశం చేసింది. ట్రాప్సిలో, నేను సి++లో ఉపయోగించేవి మరియు సిలో లేని ఎంబెడెడ్ సిస్టమ్లు కన్స్ట్రక్టర్లు మరియు డిస్ట్రక్టర్లు అని నేను అనుకున్నాను. కాబట్టి ట్రాప్సి వాస్తవానికి సి++ కన్స్ట్రక్టర్లు మరియు డిస్ట్రక్టర్లను కలిగి ఉంది. మరియు అది కూడా నేను చేసిన విషయం. సి లాంగ్వేజ్ని ఆమోదించలేకపోయింది, పదేళ్ల ముందు కూడా."
కానీ ట్రాప్సి కేవలం ఎంబెడెడ్ సిస్టమ్ల కోసం మాత్రమే కాదు, రోవ్ చెప్పారు. ఇది ప్రతిదానికీ.
"TrapC నిజానికి C కంటే తక్కువ కీలకపదాలను కలిగి ఉంది, కొంచెం కొంచెం, ఎందుకంటే నేను యూనియన్ను తొలగించాను మరియు నేను చాలా అరుదుగా ఉపయోగించే కొన్ని ఇతర విషయాలను సమస్యలను కలిగిస్తుంది మరియు మీరు వాటిని భద్రతా-క్లిష్టమైన సిస్టమ్లో ఉపయోగించలేరు. మార్గం ," అన్నాడు. "మరియు TrapCకి C వలె అదే ABI ఉంది. కాబట్టి మీరు ఏదైనా అసురక్షిత పని చేయాలనుకుంటే, మీరు దానిని C లో వ్రాసి దానికి లింక్ చేయవచ్చు. మరియు ఇది రస్ట్ నుండి చాలా తేడా, ఇక్కడ మీరు అసురక్షిత కీవర్డ్ని కలిగి ఉన్నారు, ' సరే, మీకు తెలుసా, నేను వదులుకుంటాను, నేను ఇక్కడ సురక్షితంగా ఉండలేను.
డెవలపర్లకు రోవ్ యొక్క పిచ్ ఏమిటంటే, మీరు వేరే భాష నేర్చుకోవాలనుకుంటే, దాని కోసం వెళ్లండి.
"నేను వాస్తవానికి గత వేసవిలో మోషన్ పిక్చర్ అకాడమీ యొక్క రస్ట్ కమిటీకి అధ్యక్షుడిగా ఉన్నాను," అని అతను చెప్పాడు. "మరియు ఇది ఒక ఆసక్తికరమైన భాష మరియు నేను దానితో ఆడుకోవడం ఆనందించాను, కానీ నేను అనుకున్నాను, నా సాఫ్ట్వేర్ను దానిలో తిరిగి వ్రాయాలని నేను ఊహించలేను."
C తెలిసిన వారికి, నేర్చుకునే వక్రత ఎక్కువగా ఉండకూడదు.
"సి చాలా దగ్గరగా ఉంది కాబట్టి చాలా విషయాలు సంకలనం చేయబడతాయి" అని రోవ్ చెప్పారు. "మీరు ఎక్కడ చూసిన పెద్ద తేడా ఏమిటంటే TrapCకి malloc లేదు. TrapCకి C++ లాగా కొత్త అంశాలు ఉన్నాయి. ఆపై మీరు మీ అన్ని malloc కాల్లను మార్చాలి. కానీ TrapCకి డిలీట్ లేదు. TrapCకి మెమరీ ఉంటుంది. ఉన్నాయి. ట్రాప్సిలో మెమరీ లీక్లు లేవు ఎందుకంటే కంపైలర్ ఉచిత మెమరీని నిర్వహిస్తుంది, ఈ విధంగా మీరు కొత్త కాల్ చేసిన జావా లాగా ఉంటుంది, కానీ ఎప్పటికీ కాల్ చేయవద్దు.
ట్రాప్సి అవసరాన్ని తొలగిస్తుందని తాను నమ్ముతున్నానని రోవ్ చెప్పారు దర్పా ట్రాక్టర్ ప్రోగ్రామ్, C నుండి రస్ట్ మార్పిడి సాధనాలను అభివృద్ధి చేసే ప్రయత్నం. "నేను ట్రాక్టర్ ప్రోగ్రామ్ మేనేజర్కి ఇమెయిల్ పంపాను మరియు అతను దీన్ని చేయనవసరం లేదని చెప్పాను" అని అతను చెప్పాడు. "కానీ అతను ఆ సందేశాన్ని ఎంతవరకు స్వాగతిస్తాడో నాకు తెలియదు."
రోవ్ ట్రాసెక్ యొక్క CEOగా పనిచేయాలని భావిస్తాడు మరియు కంపెనీ సహ వ్యవస్థాపకుడు, మాజీ డిస్నీ ఎగ్జిక్యూటివ్ గాబ్రియెల్ పాంటెరా COOగా వ్యవహరిస్తారు. వెంచర్ కోసం నిధులను సేకరించడం తదుపరి దశ.
"కంపైలర్ను ఉచిత ఓపెన్ సోర్స్గా పంపిణీ చేయడం మరియు మా చెల్లింపు ఉత్పత్తి అయిన AI IDEని కలిగి ఉండటం వ్యాపార ప్రణాళిక" అని అతను చెప్పాడు. "కాబట్టి ఆలోచన ఏమిటంటే, మా IDEతో, ఇది మీ కోసం ఫ్రేమ్వర్క్లను సృష్టిస్తుంది, తద్వారా మీరు చాలా ఆబ్జెక్ట్-ఓరియెంటెడ్, స్ట్రక్చర్డ్ ప్రోగ్రామ్ను కలిగి ఉంటారు మరియు AI కోడ్ స్నిప్పెట్లను వ్రాయగలదు. ఎందుకంటే ఈ రోజు, మీరు వస్తువులను నిర్మించినప్పుడు , మీరు ఉత్పాదక AI ప్రోగ్రామింగ్ చేయడానికి ప్రయత్నించినప్పుడు, ఇది చాలా స్పఘెట్టిగా ఉంటుంది, ఇది ఖచ్చితంగా యూనిట్ పరీక్షను అందించదు.
ట్రాప్సి భాష యొక్క నిర్వచనం మరియు ప్రచురణను నిర్వహించడానికి ఫౌంటెన్ అబోడ్ అనే ఫౌండేషన్ను రూపొందించాలని కూడా రోవ్ భావిస్తున్నాడు. దీనిని రోవ్ మరియు పాంటెరా పర్యవేక్షించాల్సి ఉంది.
"ఇది ప్రతిచోటా అమలు చేయాలని మేము కోరుకుంటున్నాము," రోవ్ చెప్పారు. "అన్ని ప్లాట్ఫారమ్లలో, అన్ని ఆర్కిటెక్చర్లలో. ఆలోచన ఏమిటంటే ఇది C యొక్క మెమరీ-సేఫ్ ఫోర్క్. మరియు ఇది ఫోర్క్ కాబట్టి, మీకు C తెలిస్తే, మీరు ఇప్పటికే 95 లేదా 99 శాతం మార్గంలో ఉన్నారు. చాలా ఉన్నాయి. నేర్చుకోవడం చాలా తక్కువ." ®