ፕሮግራሚንግ ከኮድ በላይ ነው።

ፕሮግራሚንግ ከኮድ በላይ ነው።

ይህ ጽሑፍ ትርጉም ነው። የስታንፎርድ ሴሚናር. ግን ከእሷ ትንሽ መግቢያ በፊት። ዞምቢዎች እንዴት ይፈጠራሉ? ሁሉም ሰው ጓደኛውን ወይም ባልደረባውን ወደ ደረጃው ለመሳብ በሚፈልግበት ሁኔታ ውስጥ ገብቷል, ነገር ግን አይሰራም. እና ከእሱ ጋር እንደ "አይሰራም" ከእርስዎ ጋር በጣም ብዙ አይደለም: በአንደኛው የመለኪያ ክፍል ላይ መደበኛ ደመወዝ, ተግባራት እና ሌሎችም, እና በሌላኛው ደግሞ ማሰብ ያስፈልጋል. ማሰብ ደስ የማይል እና ህመም ነው. በፍጥነት ተስፋ ቆርጦ አእምሮውን ሳያበራ ኮድ መጻፉን ቀጠለ። የተማረውን አቅመ ቢስነት እንቅፋት ለማሸነፍ ምን ያህል ጥረት እንደሚያስፈልግ ታስባለህ፣ እና ዝም ብለህ አታደርገውም። ዞምቢዎች የሚፈጠሩት በዚህ መንገድ ነው, ሊታከም የሚችል ይመስላል, ነገር ግን ማንም የሚያደርገው አይመስልም.

ያን ሳየው ሌስሊ ላምፖርት (አዎ፣ ከመማሪያ መጽሃፍት ያው ጓደኛ) ወደ ሩሲያ ይመጣል እና ሪፖርት አልሰራም ፣ ግን የጥያቄ እና መልስ ክፍለ ጊዜ ፣ ​​ትንሽ ተጠነቀቅኩ። ልክ እንደ ሁኔታው ​​​​ሌስሊ በዓለም ላይ ታዋቂው ሳይንቲስት ፣ በተሰራጨ ኮምፒዩቲንግ ውስጥ የመሠረታዊ ሥራዎች ደራሲ ነው ፣ እና እሱን በ LaTeX - “Lamport TeX” በሚለው ቃል በ ላ ፊደሎች ልታውቀው ትችላለህ። ሁለተኛው አሳሳቢው ነገር የሱ መስፈርት ነው፡ የሚመጣ ሁሉ (ፍፁም ከክፍያ ነፃ) ሁለት ሪፖርቶቹን አስቀድሞ ማዳመጥ አለበት፣ ቢያንስ አንድ ጥያቄ በእነሱ ላይ ይምጣ እና ከዚያ ብቻ መምጣት አለበት። ላምፖርት እዚያ የሚያስተላልፈውን ለማየት ወሰንኩ - እና በጣም ጥሩ ነው! ልክ ያ ነገር ነው፣ ዞምቢዎችን ለመፈወስ የአስማት አገናኝ-ክኒን። አስጠነቅቃችኋለሁ-ከጽሑፉ እጅግ በጣም ተለዋዋጭ ዘዴዎችን የሚወዱ እና የተፃፈውን ለመፈተሽ የማይወዱ በተለይም ሊቃጠሉ ይችላሉ ።

ከሃብሮካት በኋላ እንደውም የሴሚናሩ ትርጉም ይጀምራል። በማንበብ ይደሰቱ!

ምንም አይነት ስራ ቢሰሩ ሁል ጊዜ ሶስት ደረጃዎችን ማለፍ ያስፈልግዎታል፡-

  • ምን ግብ ላይ ለመድረስ እንደሚፈልጉ ይወስኑ;
  • ግብዎን እንዴት እንደሚያሳኩ ይወስኑ;
  • ወደ ግብዎ ይምጡ.

ይህ በፕሮግራም አወጣጥ ላይም ይሠራል። ኮድ ስንጽፍ የሚከተሉትን ማድረግ አለብን፡-

  • ፕሮግራሙ ምን ማድረግ እንዳለበት መወሰን;
  • ተግባሩን እንዴት ማከናወን እንዳለበት መወሰን;
  • ተጓዳኝ ኮድ ይፃፉ.

የመጨረሻው ደረጃ, በእርግጥ, በጣም አስፈላጊ ነው, ግን ዛሬ ስለሱ አልናገርም. ይልቁንስ የመጀመሪያዎቹን ሁለቱን እንነጋገራለን. እያንዳንዱ ፕሮግራም አውጪ ወደ ሥራ ከመጀመሩ በፊት ያከናውናቸዋል. አሳሽ ወይም ዳታቤዝ እየጻፍክ እንደሆነ እስካልወሰንክ ድረስ ለመጻፍ አትቀመጥም። ስለ ግቡ የተወሰነ ሀሳብ መኖር አለበት። እና በእርግጠኝነት ፕሮግራሙ በትክክል ምን እንደሚሰራ ያስባሉ ፣ እና ኮዱ በሆነ መንገድ ወደ አሳሽ እንደሚቀየር ተስፋ በማድረግ በሆነ መንገድ አይጻፉ።

ይህ ኮድ አስቀድሞ ማሰብ እንዴት በትክክል ይከሰታል? በዚህ ረገድ ምን ያህል ጥረት ማድረግ አለብን? ሁሉም እኛ በምንፈታው ችግር ላይ የተመካ ነው። ስህተትን የሚቋቋም የተከፋፈለ ስርዓት መፃፍ እንፈልጋለን እንበል። በዚህ ሁኔታ, ኮድ ለመጻፍ ከመቀመጡ በፊት ነገሮችን በጥንቃቄ ማሰብ አለብን. የኢንቲጀር ተለዋዋጭን በ1 ለመጨመር ብቻ ብንፈልግስ? በቅድመ-እይታ, እዚህ ሁሉም ነገር ቀላል ነው, እና ምንም ሀሳብ አያስፈልግም, ነገር ግን ከዚያ በኋላ ከመጠን በላይ መጨመር ሊከሰት እንደሚችል እናስታውሳለን. ስለዚህ, አንድ ችግር ቀላል ወይም ውስብስብ መሆኑን ለመረዳት እንኳን, በመጀመሪያ ማሰብ አለብዎት.

ለችግሩ መፍትሄዎች አስቀድመው ካሰቡ, ስህተቶችን ማስወገድ ይችላሉ. ይህ ግን አስተሳሰብህ ግልጽ እንዲሆን ይጠይቃል። ይህንን ለማግኘት, ሃሳብዎን መጻፍ ያስፈልግዎታል. የዲክ ጊንደንን ጥቅስ በጣም ወድጄዋለሁ፡ “ ስትጽፍ ተፈጥሮ ምን ያህል አስተሳሰብህ ደካማ እንደሆነ ያሳያል። ካልጻፍክ፣ እያሰብክ እንደሆነ ብቻ ነው የምታስበው። እና ሃሳቦችዎን በመግለጫዎች መልክ መጻፍ ያስፈልግዎታል.

ዝርዝሮች ብዙ ተግባራትን ያከናውናሉ, በተለይም በትላልቅ ፕሮጀክቶች ውስጥ. ግን ስለ አንዱ ብቻ እናገራለሁ: በግልጽ እንድናስብ ይረዱናል. በግልጽ ማሰብ በጣም አስፈላጊ እና በጣም ከባድ ነው, ስለዚህ እዚህ ማንኛውንም እርዳታ እንፈልጋለን. ዝርዝር መግለጫዎችን በየትኛው ቋንቋ መጻፍ አለብን? በአጠቃላይ ይህ ሁልጊዜ ለፕሮግራም አውጪዎች የመጀመሪያው ጥያቄ ነው-በምን ቋንቋ እንጽፋለን. ለእሱ ምንም ትክክለኛ መልስ የለም: እየፈታናቸው ያሉ ችግሮች በጣም የተለያዩ ናቸው. ለአንዳንዶች፣ TLA+ ያዘጋጀሁት የስፔሲፊኬሽን ቋንቋ ነው። ለሌሎች, ቻይንኛ መጠቀም የበለጠ አመቺ ነው. ሁሉም ነገር እንደ ሁኔታው ​​ይወሰናል.

በጣም አስፈላጊው ሌላ ጥያቄ ነው-የጠራ አስተሳሰብን እንዴት ማግኘት ይቻላል? መልስ፡- እንደ ሳይንቲስቶች ማሰብ አለብን። ይህ ባለፉት 500 ዓመታት ውስጥ እራሱን ያረጋገጠ የአስተሳሰብ መንገድ ነው። በሳይንስ ውስጥ፣ የእውነታውን የሂሳብ ሞዴሎች እንገነባለን። አስትሮኖሚ ምናልባት በቃሉ ጥብቅ ትርጉም የመጀመሪያው ሳይንስ ነው። በሥነ ፈለክ ጥናት ውስጥ ጥቅም ላይ በሚውለው የሂሳብ ሞዴል ውስጥ የሰማይ አካላት በጅምላ ፣ በአቀማመጥ እና በፍጥነት እንደ ነጥቦች ይታያሉ ፣ ምንም እንኳን በእውነቱ እነሱ በተራሮች እና ውቅያኖሶች ፣ ማዕበል እና ማዕበል ውስጥ እጅግ በጣም ውስብስብ ነገሮች ናቸው። ይህ ሞዴል, ልክ እንደሌላው, የተወሰኑ ችግሮችን ለመፍታት የተፈጠረ ነው. ፕላኔት ለማግኘት ከፈለጉ ቴሌስኮፕን የት እንደሚጠቁሙ ለመወሰን በጣም ጥሩ ነው. ነገር ግን በዚህ ፕላኔት ላይ ያለውን የአየር ሁኔታ ለመተንበይ ከፈለጉ, ይህ ሞዴል አይሰራም.

የሂሳብ ትምህርት የአምሳያው ባህሪያትን ለመወሰን ያስችለናል. እና ሳይንስ እነዚህ ንብረቶች ከእውነታው ጋር እንዴት እንደሚዛመዱ ያሳያል. ስለ ሳይንስ፣ ስለ ኮምፒውተር ሳይንስ እንነጋገር። የምንሰራበት እውነታ የተለያዩ አይነት የኮምፒዩተር ስርዓቶችን ነው፡ ፕሮሰሰር፣ ጌም ኮንሶሎች፣ ኮምፒውተሮች፣ ፈጻሚ ፕሮግራሞች እና የመሳሰሉት። በኮምፒዩተር ላይ ስለ አንድ ፕሮግራም ስለማስኬድ እናገራለሁ, ነገር ግን በአጠቃላይ እነዚህ ሁሉ መደምደሚያዎች ለማንኛውም የኮምፒዩተር ሲስተም ይሠራሉ. በእኛ ሳይንስ ውስጥ ብዙ የተለያዩ ሞዴሎችን እንጠቀማለን-ቱሪንግ ማሽን ፣ በከፊል የታዘዙ የክስተቶች ስብስቦች እና ሌሎች ብዙ።

ፕሮግራም ምንድን ነው? ይህ በግል ሊታሰብ የሚችል ማንኛውም ኮድ ነው። አሳሽ መጻፍ ያስፈልገናል እንበል. ሶስት ተግባራትን እናከናውናለን-የተጠቃሚውን የፕሮግራሙ እይታ እንቀርጻለን, ከዚያም የፕሮግራሙን ከፍተኛ ደረጃ ንድፍ እንጽፋለን እና በመጨረሻም ኮዱን እንጽፋለን. ኮዱን በምንጽፍበት ጊዜ, የጽሑፍ ቅርጸት መፃፍ እንዳለብን እንገነዘባለን. እዚህ እንደገና ሶስት ችግሮችን መፍታት አለብን: ይህ መሳሪያ ምን ዓይነት ጽሑፍ እንደሚመለስ ይወስኑ; ለመቅረጽ ስልተ ቀመር ይምረጡ; ኮድ ጻፍ. ይህ ተግባር የራሱ የሆነ ንዑስ ተግባር አለው፡ ሰረዝን በቃላት ውስጥ በትክክል አስገባ። ይህንን ንኡስ ተግባር በሦስት እርከኖች እንፈታዋለን - እንደምታዩት እነሱ በብዙ ደረጃዎች ይደጋገማሉ።

የመጀመሪያውን ደረጃ በበለጠ ዝርዝር እንመልከት-ፕሮግራሙ ምን ችግር እንደሚፈታ. እዚህ ፣ እኛ ብዙውን ጊዜ አንድን ፕሮግራም አንዳንድ ግብዓት የሚወስድ እና የተወሰነ ውጤት የሚያመጣ ተግባር አድርገን እንቀርጻለን። በሂሳብ ውስጥ አንድ ተግባር ብዙውን ጊዜ እንደ የታዘዘ ጥንድ ስብስብ ይገለጻል። ለምሳሌ፣ ለተፈጥሮ ቁጥሮች የስኩዊንግ ተግባር እንደ ስብስብ {<0,0>, <1,1>, <2,4>, <3,9>, …} ተገልጿል. የእንደዚህ አይነት ተግባር ጎራ የእያንዳንዱ ጥንድ የመጀመሪያ አካላት ስብስብ ነው, ማለትም የተፈጥሮ ቁጥሮች. አንድን ተግባር ለመወሰን ወሰን እና ቀመሩን መግለፅ አለብን።

ነገር ግን በሂሳብ ውስጥ ያሉ ተግባራት በፕሮግራሚንግ ቋንቋዎች ውስጥ ካሉ ተግባራት ጋር አንድ አይነት አይደሉም። ሒሳቡ በጣም ቀላል ነው። ለተወሳሰቡ ምሳሌዎች ጊዜ ስለሌለኝ፣ ቀላል የሆነውን እንመልከት፡ በC ውስጥ ያለ ተግባር ወይም በጃቫ ውስጥ የሁለት ኢንቲጀር ትልቁን የጋራ አካፋይ የሚመልስ የማይንቀሳቀስ ዘዴ። በዚህ ዘዴ ዝርዝር ውስጥ, እንጽፋለን: ያሰላል GCD(M,N) ለክርክር M и Nየት GCD(M,N) - ጎራው የኢንቲጀር ጥንዶች ስብስብ የሆነ ተግባር፣ እና የመመለሻ እሴቱ የሚከፋፈለው ትልቁ ኢንቲጀር ነው። M и N. ይህ ሞዴል ከእውነታው ጋር እንዴት ይዛመዳል? ሞዴሉ ኢንቲጀር ላይ ይሰራል፣ በሲ ወይም በጃቫ 32-ቢት አለን። int. ይህ ሞዴል አልጎሪዝም ትክክል መሆኑን ለመወሰን ያስችለናል GCDነገር ግን የትርፍ መጠን ስህተቶችን አይከላከልም። ይህ የበለጠ ውስብስብ ሞዴል ያስፈልገዋል, ለዚህም ምንም ጊዜ የለም.

እንደ ሞዴል ስለ አንድ ተግባር ውስንነት እንነጋገር. አንዳንድ ፕሮግራሞች (እንደ ኦፕሬቲንግ ሲስተሞች ያሉ) ለተወሰኑ ግቤቶች የተወሰነ እሴት ብቻ አይመልሱም፣ ያለማቋረጥ ሊሄዱ ይችላሉ። በተጨማሪም, እንደ ሞዴል ያለው ተግባር ለሁለተኛው ደረጃ ተስማሚ አይደለም: ችግሩን እንዴት እንደሚፈታ ማቀድ. ፈጣን መደርደር እና የአረፋ መደርደር አንድ አይነት ተግባር ያሰላሉ፣ ግን ሙሉ ለሙሉ የተለያዩ ስልተ ቀመሮች ናቸው። ስለዚህ, የፕሮግራሙ ግብ እንዴት እንደሚሳካ ለመግለጽ, የተለየ ሞዴል እጠቀማለሁ, ደረጃውን የጠበቀ የባህርይ ሞዴል እንበለው. በውስጡ ያለው ፕሮግራም እንደ ሁሉም የተፈቀዱ ባህሪያት ስብስብ ነው የሚወከለው, እያንዳንዱም በተራው, የግዛቶች ቅደም ተከተል ነው, እና ግዛቱ ለተለዋዋጮች እሴቶችን መስጠት ነው.

የ Euclid ስልተ ቀመር ሁለተኛ ደረጃ ምን እንደሚመስል እንይ። ማስላት አለብን GCD(M, N). እናስጀምራለን M እንዴት xና N እንዴት y, ከዚያም በተደጋጋሚ የእነዚህን ተለዋዋጮች ትንሹን ከትልቅ እስከ እኩል ድረስ ይቀንሱ. ለምሳሌ, ከሆነ M = 12ና N = 18, የሚከተለውን ባህሪ መግለጽ እንችላለን:

[x = 12, y = 18] → [x = 12, y = 6] → [x = 6, y = 6]

እና M = 0 и N = 0? ዜሮ በሁሉም ቁጥሮች የተከፋፈለ ነው, ስለዚህ በዚህ ጉዳይ ላይ ምንም ታላቅ አካፋይ የለም. በዚህ ሁኔታ ወደ መጀመሪያው ደረጃ ተመልሰን መጠየቅ አለብን፡-አዎንታዊ ያልሆኑ ቁጥሮች GCD በትክክል ማስላት አለብን? ይህ አስፈላጊ ካልሆነ, መግለጫውን መቀየር ብቻ ያስፈልግዎታል.

እዚህ ስለ ምርታማነት ትንሽ ገለጻ ማድረግ አለብን. ብዙውን ጊዜ የሚለካው በቀን በተፃፉ የኮድ መስመሮች ብዛት ነው። ነገር ግን የተወሰኑ የመስመሮች ብዛት ካስወገዱ ስራዎ የበለጠ ጠቃሚ ነው, ምክንያቱም ለጥቃቅን ቦታ ትንሽ ነው. እና ኮዱን ለማስወገድ ቀላሉ መንገድ በመጀመሪያ ደረጃ ላይ ነው. እርስዎ ለመተግበር የሚሞክሩትን ሁሉንም ደወሎች እና ጩኸቶች ሳያስፈልግዎ ሙሉ በሙሉ ሊሆን ይችላል። ፕሮግራምን ለማቅለል እና ጊዜ ለመቆጠብ ፈጣኑ መንገድ መደረግ የሌለባቸውን ነገሮች አለማድረግ ነው። ሁለተኛው እርምጃ ሁለተኛው በጣም ጊዜ ቆጣቢ አቅም ነው። ምርታማነትን ከተፃፉ መስመሮች አንፃር ከለካህ አንድን ተግባር እንዴት ማከናወን እንደምትችል ማሰብህ ያደርግሃል አነስተኛ ምርታማነት, ምክንያቱም በትንሽ ኮድ ተመሳሳይ ችግር መፍታት ይችላሉ. እዚህ ትክክለኛ ስታቲስቲክስን መስጠት አልችልም, ምክንያቱም በመግለጫው ላይ ጊዜን በማሳለፍ, ማለትም በመጀመሪያ እና በሁለተኛው ደረጃዎች ላይ, ያልጻፍኩትን የመስመሮች ብዛት ለመቁጠር ምንም መንገድ የለኝም. እና ሙከራው እዚህም ሊዘጋጅ አይችልም, ምክንያቱም በሙከራው ውስጥ የመጀመሪያውን ደረጃ የማጠናቀቅ መብት የለንም, ተግባሩ አስቀድሞ ተወስኗል.

መደበኛ ባልሆኑ ዝርዝሮች ውስጥ ብዙ ችግሮችን ችላ ማለት ቀላል ነው። ለተግባሮች ጥብቅ ዝርዝሮችን ለመጻፍ ምንም አስቸጋሪ ነገር የለም, ስለዚህ ጉዳይ አልናገርም. በምትኩ፣ ለመደበኛ ባህሪያት ጠንካራ መግለጫዎችን ስለመጻፍ እንነጋገራለን። የደህንነት ንብረቱን በመጠቀም የትኛውንም የባህሪ ስብስብ ሊገለጽ እንደሚችል የሚገልጽ ቲዎሬም አለ። (ደህንነት) እና የመዳን ባህሪያት (ሕያውነት). ደህንነት ማለት ምንም መጥፎ ነገር አይከሰትም, ፕሮግራሙ የተሳሳተ መልስ አይሰጥም. መትረፍ ማለት ይዋል ይደር እንጂ አንድ ጥሩ ነገር ይከሰታል ማለትም ፕሮግራሙ ፈጥኖም ሆነ ዘግይቶ ትክክለኛውን መልስ ይሰጣል. እንደ ደንቡ, ደህንነት የበለጠ አስፈላጊ አመላካች ነው, ስህተቶች ብዙውን ጊዜ እዚህ ይከሰታሉ. ስለዚህ, ጊዜን ለመቆጠብ, ስለ መትረፍ አልናገርም, ምንም እንኳን በእርግጥ አስፈላጊ ቢሆንም.

በመጀመሪያ ደረጃ ሊሆኑ የሚችሉ የመጀመሪያ ግዛቶችን በማዘዝ ደህንነትን እናሳካለን። ሁለተኛ፣ ለእያንዳንዱ ግዛት ከሚመጡት ሁሉም ግዛቶች ጋር ያሉ ግንኙነቶች። እንደ ሳይንቲስቶች እንስራ እና ግዛቶችን በሂሳብ እንገልፃለን። የመነሻ ግዛቶች ስብስብ በቀመር ይገለጻል ፣ ለምሳሌ ፣ በዩክሊድ አልጎሪዝም ሁኔታ ውስጥ- (x = M) ∧ (y = N). ለተወሰኑ እሴቶች M и N አንድ የመጀመሪያ ሁኔታ ብቻ አለ. ከቀጣዩ ግዛት ጋር ያለው ግንኙነት የቀጣዩ ግዛት ተለዋዋጮች ከዋና ጋር በተፃፉበት ቀመር ይገለጻል, እና የአሁኑ ሁኔታ ተለዋዋጮች ያለ ፕራይም የተፃፉ ናቸው. የዩክሊድ አልጎሪዝምን በተመለከተ የሁለቱን ቀመሮች መጣመም እናስተናግዳለን ፣ ከእነዚህም ውስጥ በአንዱ x ትልቁ ዋጋ ነው, እና በሁለተኛው ውስጥ - y:

ፕሮግራሚንግ ከኮድ በላይ ነው።

በመጀመሪያው ሁኔታ አዲሱ የy እሴት ከቀድሞው የy እሴት ጋር እኩል ነው, እና ትንሹን ተለዋዋጭ ከትልቅ ተለዋዋጭ በመቀነስ አዲሱን የ x እሴት እናገኛለን. በሁለተኛው ጉዳይ ተቃራኒውን እናደርጋለን.

ወደ ዩክሊድ ስልተ ቀመር እንመለስ። እንደ ገና እናስብ M = 12, N = 18. ይህ ነጠላ የመጀመሪያ ሁኔታን ይገልጻል ፣ (x = 12) ∧ (y = 18). ከዚያ እነዚያን እሴቶች ከላይ ባለው ቀመር ውስጥ እንሰካቸዋለን እና እናገኛለን፡-

ፕሮግራሚንግ ከኮድ በላይ ነው።

ብቸኛው መፍትሔ ይኸውና፡- x' = 18 - 12 ∧ y' = 12እና ባህሪውን እናገኛለን- [x = 12, y = 18]. በተመሳሳይ፣ በባህሪያችን ያሉትን ሁሉንም ግዛቶች መግለፅ እንችላለን፡- [x = 12, y = 18] → [x = 12, y = 6] → [x = 6, y = 6].

በመጨረሻው ግዛት [x = 6, y = 6] ሁለቱም የገለጻው ክፍሎች ሐሰት ስለሚሆኑ ቀጣይ ሁኔታ የለውም። ስለዚህ ፣ የሁለተኛው ደረጃ ሙሉ ዝርዝር አለን - እርስዎ እንደሚመለከቱት ፣ ይህ እንደ መሐንዲሶች እና ሳይንቲስቶች በጣም ተራ ሂሳብ ነው ፣ እና እንደ ኮምፒዩተር ሳይንስ እንግዳ አይደለም።

እነዚህ ሁለት ቀመሮች ወደ አንድ የጊዜያዊ አመክንዮ ቀመር ሊጣመሩ ይችላሉ። እሷ ቆንጆ እና ለማብራራት ቀላል ነች ፣ ግን አሁን ለእሷ ምንም ጊዜ የለም። ለኑሮ ንብረት ብቻ ጊዜያዊ አመክንዮ ሊያስፈልገን ይችላል፣ ለደህንነት ሲባል አያስፈልግም። ጊዜያዊ አመክንዮ አልወድም ፣ እሱ በጣም ተራ ሂሳብ አይደለም ፣ ግን በአኗኗር ሁኔታ አስፈላጊ ክፋት ነው።

በዩክሊድ ስልተ ቀመር ለእያንዳንዱ እሴት x и y ልዩ እሴቶች አሏቸው x' и y', ይህም ከሚቀጥለው ግዛት ጋር ያለውን ግንኙነት እውነት ያደርገዋል. በሌላ አነጋገር የዩክሊድ አልጎሪዝም ቆራጥ ነው። የማይወስን አልጎሪዝምን ለመቅረጽ፣ አሁን ያለው ሁኔታ ብዙ ሊሆኑ የሚችሉ የወደፊት ግዛቶች ሊኖሩት ይገባል፣ እና እያንዳንዱ ያልተከፋፈለ ተለዋዋጭ እሴት ብዙ ዋና ተለዋዋጭ እሴቶች አሉት ፣ ለምሳሌ ከሚቀጥለው ግዛት ጋር ያለው ግንኙነት እውነት ነው። ይህን ማድረግ ቀላል ነው፣ ግን አሁን ምሳሌዎችን አልሰጥም።

የሚሰራ መሳሪያ ለመስራት መደበኛ ሂሳብ ያስፈልግዎታል። መግለጫውን እንዴት መደበኛ ማድረግ ይቻላል? ይህንን ለማድረግ, መደበኛ ቋንቋ ያስፈልገናል, ለምሳሌ, TLA+. የዩክሊድ አልጎሪዝም መግለጫ በዚህ ቋንቋ ይህንን ይመስላል።

ፕሮግራሚንግ ከኮድ በላይ ነው።

የሶስት ማዕዘን ምልክት ያለው የእኩል ምልክት ምልክት ማለት በስተግራ ያለው ዋጋ ከምልክቱ በስተቀኝ ካለው እሴት ጋር እኩል ነው ማለት ነው. በመሠረቱ, ዝርዝር መግለጫው ፍቺ ነው, በእኛ ሁኔታ ሁለት ትርጓሜዎች. በTLA+ ውስጥ ላለው ዝርዝር መግለጫ፣ ልክ ከላይ ባለው ስላይድ ላይ መግለጫዎችን እና አንዳንድ አገባቦችን ማከል ያስፈልግዎታል። በ ASCII ውስጥ ይህ ይመስላል

ፕሮግራሚንግ ከኮድ በላይ ነው።

እንደሚመለከቱት, ምንም የተወሳሰበ ነገር የለም. የTLA+ መግለጫው ሊሞከር ይችላል፣ ማለትም በትንሽ ሞዴል ሁሉንም ሊሆኑ የሚችሉ ባህሪዎችን ማለፍ። በእኛ ሁኔታ, ይህ ሞዴል የተወሰኑ እሴቶች ይሆናል M и N. ይህ ሙሉ በሙሉ አውቶማቲክ የሆነ በጣም ቀልጣፋ እና ቀላል የማረጋገጫ ዘዴ ነው። መደበኛ የእውነት ማረጋገጫዎችን መፃፍ እና በሜካኒካል መፈተሽም ይቻላል ነገርግን ይህ ብዙ ጊዜ የሚወስድ በመሆኑ ማንም ይህን የሚያደርገው የለም ማለት ይቻላል።

የቲኤልኤ+ ዋነኛ ጉዳቱ ሂሳብ መሆኑ ነው፣ እና ፕሮግራመሮች እና የኮምፒውተር ሳይንቲስቶች ሂሳብን ይፈራሉ። በመጀመሪያ ሲታይ, ይህ እንደ ቀልድ ይመስላል, ግን በሚያሳዝን ሁኔታ, በቁም ነገር ማለቴ ነው. የሥራ ባልደረባዬ TLA+ን ለብዙ ገንቢዎች ለማስረዳት እንዴት እንደሞከረ እየነገረኝ ነበር። ቀመሮቹ በስክሪኑ ላይ እንደታዩ ወዲያውኑ የብርጭቆ ዓይኖች ሆኑ። ስለዚህ TLA+ ካስፈራዎት መጠቀም ይችላሉ። ፕላስካል፣ የአሻንጉሊት ፕሮግራሚንግ ቋንቋ አይነት ነው። በፕላስካል ውስጥ ያለ አገላለጽ ማንኛውም TLA+ አገላለጽ ማለትም በአጠቃላይ ማንኛውም የሂሳብ አገላለጽ ሊሆን ይችላል። በተጨማሪም ፕላስካል ላልተወሰነ ስልተ ቀመሮች አገባብ አለው። ፕላስካል ማንኛውንም የTLA+ አገላለጽ ሊጽፍ ስለሚችል፣ PlusCal ከማንኛውም ትክክለኛ የፕሮግራም አወጣጥ ቋንቋ የበለጠ ገላጭ ነው። በመቀጠል ፕላስካል በቀላሉ ሊነበብ ወደሚችል የTLA+ ዝርዝር መግለጫ ተሰብስቧል። ይህ ማለት ግን ውስብስብ የፕላስካል ዝርዝር መግለጫ በ TLA + ላይ ወደ ቀላል ይቀየራል ማለት አይደለም - በመካከላቸው ያለው ደብዳቤ ግልጽ ነው, ምንም ተጨማሪ ውስብስብነት አይኖርም. በመጨረሻም፣ ይህ መግለጫ በTLA+ መሳሪያዎች ሊረጋገጥ ይችላል። በአጠቃላይ ፕላስካል የሂሳብ ፎቢያን ለማሸነፍ ይረዳል እና ለፕሮግራም አውጪዎች እና ለኮምፒዩተር ሳይንቲስቶች እንኳን ለመረዳት ቀላል ነው። ቀደም ሲል, በእሱ ላይ ስልተ ቀመሮችን አሳትሜያለሁ ለተወሰነ ጊዜ (ወደ 10 ዓመታት ገደማ).

ምናልባት አንድ ሰው TLA + እና PlusCal ሂሳብ ናቸው ብለው ይቃወማሉ፣ እና ሂሳብ ደግሞ በተፈጠሩ ምሳሌዎች ላይ ብቻ ይሰራል። በተግባር, ከዓይነቶች, ሂደቶች, እቃዎች, ወዘተ ጋር እውነተኛ ቋንቋ ያስፈልግዎታል. ይህ ስህተት ነው። በአማዞን ውስጥ ይሠራ የነበረው ክሪስ ኒውኮምብ የጻፈው እነሆ፡- “TLA+ን በአሥር ዋና ዋና ፕሮጀክቶች ላይ ተጠቅመናል፣በእያንዳንዱ ሁኔታ መጠቀማችን ለልማት ትልቅ ለውጥ አምጥቷል ምክንያቱም ምርቱን ከመምታታችን በፊት አደገኛ ሳንካዎችን ለመያዝ ስለቻልን እና እንድንችል የሚያስፈልገንን ግንዛቤ እና እምነት ስለሰጠን ነው። የፕሮግራሙን እውነት ሳይነኩ ኃይለኛ የአፈፃፀም ማሻሻያዎችን ያድርጉ". ብዙውን ጊዜ መደበኛ ዘዴዎችን ስንጠቀም ውጤታማ ያልሆነ ኮድ እናገኛለን - በተግባር ሁሉም ነገር በትክክል ተቃራኒ ነው. በተጨማሪም, የፕሮግራም አዘጋጆች ጠቃሚነታቸውን ቢያምኑም, አስተዳዳሪዎች የመደበኛ ዘዴዎችን አስፈላጊነት ማሳመን እንደማይችሉ አስተያየት አለ. እና ኒውኮምብ እንዲህ ሲል ጽፏል: "አስተዳዳሪዎች አሁን ለTLA + ዝርዝር መግለጫዎችን ለመፃፍ እና በተለይም ለዚህ ጊዜ ለመመደብ በጣም እየጣሩ ነው". ስለዚህ አስተዳዳሪዎች TLA+ እየሰራ መሆኑን ሲያዩ፣ በደስታ ይቀበላሉ። ክሪስ ኒውኮምብ ይህንን የጻፈው ከስድስት ወር በፊት (ጥቅምት 2014) ሲሆን አሁን ግን እኔ እስከማውቀው ድረስ TLA+ በ 14 ፕሮጀክቶች ውስጥ ጥቅም ላይ ይውላል እንጂ 10 አይደለም. ሌላው ምሳሌ ከ XBox 360 ንድፍ ጋር የተያያዘ ነው. አንድ ተለማማጅ ወደ ቻርልስ ታከር መጣ እና የማህደረ ትውስታ ስርዓት ዝርዝር መግለጫ ጽፏል. ለዚህ ገለጻ ምስጋና ይግባውና፣ ያለበለዚያ ሳይስተዋል የማይቀር ስህተት ተገኘ፣ እና በዚህ ምክንያት እያንዳንዱ XBox 360 ከአራት ሰአታት አጠቃቀም በኋላ ይወድቃል። የIBM መሐንዲሶች ሙከራቸው ይህንን ስህተት እንዳላገኙት አረጋግጠዋል።

በበይነመረብ ላይ ስለ TLA + የበለጠ ማንበብ ይችላሉ ፣ ግን አሁን ስለ መደበኛ ያልሆኑ ዝርዝሮች እንነጋገር ። አነስተኛውን የጋራ አካፋይ እና የመሳሰሉትን የሚያሰሉ ፕሮግራሞችን መፃፍ ብዙም አይጠበቅብንም። ብዙ ጊዜ ለ TLA+ የጻፍኩትን ቆንጆ-ማተሚያ መሳሪያ የመሳሰሉ ፕሮግራሞችን እንጽፋለን። በጣም ቀላል ከሆነው ሂደት በኋላ የTLA + ኮድ ይህን ይመስላል።

ፕሮግራሚንግ ከኮድ በላይ ነው።

ነገር ግን ከላይ ባለው ምሳሌ፣ ተጠቃሚው ምናልባት ጥምረቱ እና እኩል ምልክቶች እንዲስመሩ ይፈልጉ ነበር። ስለዚህ ትክክለኛው ቅርጸት ይህን ይመስላል።

ፕሮግራሚንግ ከኮድ በላይ ነው።

ሌላ ምሳሌ ደግሞ እንመልከት-

ፕሮግራሚንግ ከኮድ በላይ ነው።

እዚህ፣ በተቃራኒው፣ በምንጩ ውስጥ የእኩል፣ የመደመር እና የማባዛት ምልክቶች አሰላለፍ በዘፈቀደ ነበር፣ ስለዚህ ቀላሉ አሰራር በቂ ነው። በአጠቃላይ, ትክክለኛ ቅርጸት ትክክለኛ የሂሳብ ፍቺ የለም, ምክንያቱም በዚህ ጉዳይ ላይ "ትክክል" ማለት "ተጠቃሚው የሚፈልገው" ማለት ነው, እና ይህ በሂሳብ ሊታወቅ አይችልም.

የእውነት ፍቺ ከሌለን ስፔሲፊኬሽኑ ከንቱ ይመስላል። ግን አይደለም. አንድ ፕሮግራም ምን ማድረግ እንዳለበት ስለማናውቅ እንዴት እንደሚሰራ ማሰብ አያስፈልገንም ማለት አይደለም - በተቃራኒው የበለጠ ጥረት ማድረግ አለብን. መግለጫው በተለይ እዚህ አስፈላጊ ነው. ለተቀነባበረ ህትመት በጣም ጥሩውን ፕሮግራም ለመወሰን የማይቻል ነው, ነገር ግን ይህ ማለት በጭራሽ መውሰድ የለብንም ማለት አይደለም, እና እንደ የንቃተ ህሊና ዥረት ኮድ መጻፍ ጥሩ ነገር አይደለም. በመጨረሻ ፣ የስድስት ህጎችን ዝርዝር መግለጫ ከትርጉሞች ጋር ጻፍኩ በአስተያየቶች መልክ በጃቫ ፋይል ውስጥ። ከህጎቹ ውስጥ የአንዱ ምሳሌ ይኸውና፡- a left-comment token is LeftComment aligned with its covering token. ይህ ህግ የተጻፈው በሂሳብ እንግሊዝኛ ነው እንበል፡- LeftComment aligned, left-comment и covering token - ትርጓሜዎች ጋር ውሎች. የሂሳብ ሊቃውንት ሒሳብን የሚገልጹት በዚህ መንገድ ነው፡ የቃላት ፍቺዎችን ይጽፋሉ እና በእነሱ ላይ ተመስርተው ሕጎችን ይጽፋሉ። የዚህ ዓይነቱ ዝርዝር ጥቅም ከ 850 የኮድ መስመሮች ስድስት ደንቦች ለመረዳት እና ለማረም በጣም ቀላል ናቸው. እነዚህን ደንቦች መጻፍ ቀላል አልነበረም፣ እነሱን ለማረም ብዙ ጊዜ ወስዷል ማለት አለብኝ። በተለይ ለዚህ ዓላማ የትኛው ደንብ ጥቅም ላይ እንደዋለ የሚገልጽ ኮድ ጻፍኩ. እነዚህን ስድስት ህጎች በበርካታ ምሳሌዎች ስለሞከርኳቸው 850 የኮድ መስመሮችን ማረም አላስፈለገኝም እና ስህተቶችን ለማግኘት በጣም ቀላል ሆኖ ተገኝቷል። ጃቫ ለዚህ ጥሩ መሳሪያዎች አሉት. ኮዱን አሁን ብጽፍ ኖሮ ብዙ ጊዜ ይወስድብኝ ነበር፣ እና ቅርጸቱ ጥራት የሌለው ይሆን ነበር።

ለምን መደበኛ ዝርዝር መግለጫ መጠቀም አልተቻለም? በአንድ በኩል, ትክክለኛው አፈፃፀም እዚህ በጣም አስፈላጊ አይደለም. መዋቅራዊ ህትመቶች ማንንም ላለማስደሰታቸው የማይቀር ነው፣ ስለዚህ በሁሉም ያልተለመዱ ሁኔታዎች ውስጥ በትክክል እንዲሰራ ማድረግ አላስፈለገኝም። በጣም አስፈላጊው ነገር ደግሞ በቂ መሣሪያ ስላልነበረኝ ነው። የቲኤልኤ+ ሞዴል አራሚ እዚህ ምንም ፋይዳ የለውም፣ስለዚህ ምሳሌዎቹን በእጅ መጻፍ አለብኝ።

ከላይ ያለው ዝርዝር መግለጫ ለሁሉም ዝርዝሮች የተለመዱ ባህሪያት አሉት. ከኮዱ ከፍ ያለ ደረጃ ነው። በማንኛውም ቋንቋ ሊተገበር ይችላል. ለመጻፍ ማንኛቸውም መሳሪያዎች ወይም ዘዴዎች ምንም ፋይዳ የላቸውም። ይህንን ዝርዝር መግለጫ ለመጻፍ ምንም የፕሮግራሚንግ ኮርስ አይረዳዎትም። እና እርስዎ በTLA+ ውስጥ የተዋቀሩ የሕትመት ፕሮግራሞችን ለመጻፍ በተለይ ቋንቋ እየጻፉ ካልሆነ በስተቀር ይህንን መግለጫ አላስፈላጊ ሊያደርጓቸው የሚችሉ ምንም መሣሪያዎች የሉም። በመጨረሻም, ይህ ዝርዝር ኮድ በትክክል እንዴት እንደምንጽፍ ምንም አይናገርም, ይህ ኮድ ምን እንደሚሰራ ብቻ ነው የሚናገረው. ስለ ኮዱ ማሰብ ከመጀመራችን በፊት ችግሩን ለማሰብ እንዲረዳን መግለጫውን እንጽፋለን።

ነገር ግን ይህ ዝርዝር ከሌሎች መመዘኛዎች የሚለዩት ባህሪያትም አሉት. 95% የሚሆኑት ሌሎች ዝርዝሮች በጣም አጭር እና ቀላል ናቸው፡

ፕሮግራሚንግ ከኮድ በላይ ነው።

በተጨማሪም, ይህ ዝርዝር ደንቦች ስብስብ ነው. እንደ አንድ ደንብ, ይህ ደካማ ዝርዝር ምልክት ነው. የሕጎች ስብስብ የሚያስከትለውን መዘዝ መረዳት በጣም ከባድ ነው፣ ለዚህም ነው እነሱን ለማረም ብዙ ጊዜ ማሳለፍ የነበረብኝ። ሆኖም ግን, በዚህ ሁኔታ, የተሻለ መንገድ ማግኘት አልቻልኩም.

ያለማቋረጥ ስለሚሠሩ ፕሮግራሞች ጥቂት ቃላት መናገር ተገቢ ነው። እንደ አንድ ደንብ, በትይዩ ይሰራሉ, ለምሳሌ, ስርዓተ ክወናዎች ወይም የተከፋፈሉ ስርዓቶች. በጣም ጥቂት ሰዎች በአእምሯዊም ሆነ በወረቀት ሊረዷቸው ይችላሉ, እና እኔ ከነሱ አንዱ አይደለሁም, ምንም እንኳን አንድ ጊዜ ማድረግ ብችልም. ስለዚህ ስራችንን የሚፈትሹ መሳሪያዎች ያስፈልጉናል - ለምሳሌ TLA + ወይም PlusCal።

ኮዱ በትክክል ምን ማድረግ እንዳለበት ካወቅኩ ዝርዝር መግለጫ መጻፍ ለምን አስፈለገ? እንደውም የማውቀው መሰለኝ። በተጨማሪም፣ በመግለጫው፣ አንድ የውጭ ሰው በትክክል የሚያደርገውን ለመረዳት ከአሁን በኋላ ወደ ኮድ መግባት አያስፈልገውም። ህግ አለኝ፡ አጠቃላይ ህጎች ሊኖሩ አይገባም። ለዚህ ህግ የተለየ ነገር አለ፣ በእርግጥ፣ እኔ የምከተለው አጠቃላይ ህግ እሱ ብቻ ነው፡ ኮዱ የሚሰራው ነገር ዝርዝር ኮድ ሲጠቀሙ ማወቅ ያለባቸውን ሁሉ ለሰዎች መንገር አለበት።

ስለዚህ ፕሮግራመሮች ስለ ማሰብ በትክክል ምን ማወቅ አለባቸው? ለጀማሪዎች ፣ እንደማንኛውም ሰው ፣ እርስዎ ካልፃፉ ፣ እርስዎ እያሰቡ ብቻ ነው የሚመስለው። እንዲሁም ኮድ ከማድረግዎ በፊት ማሰብ አለብዎት, ይህም ማለት ኮድ ከማስቀመጥዎ በፊት መጻፍ ያስፈልግዎታል. መግለጫው ኮድ ማድረግ ከመጀመራችን በፊት የምንጽፈው ነው። ማንኛውም ሰው ሊጠቀምበት ወይም ሊሻሻል ለሚችል ኮድ ዝርዝር መግለጫ ያስፈልጋል። እና ይህ "አንድ ሰው" ከተጻፈ ከአንድ ወር በኋላ እራሱ የኮዱ ደራሲ ሊሆን ይችላል. ለትላልቅ ፕሮግራሞች እና ስርዓቶች, ለክፍሎች, ለስልቶች እና አንዳንዴም ውስብስብ ለሆኑ የአንድ ዘዴ ክፍሎች ዝርዝር መግለጫ ያስፈልጋል. ስለ ኮዱ በትክክል ምን መፃፍ አለበት? ምን እንደሚሰራ ማለትም ይህንን ኮድ ለሚጠቀም ለማንኛውም ሰው ምን ሊጠቅም እንደሚችል መግለጽ ያስፈልግዎታል። አንዳንድ ጊዜ ኮዱ ዓላማውን እንዴት እንደሚፈጽም መግለጽ አስፈላጊ ሊሆን ይችላል. ይህንን ዘዴ በአልጎሪዝም ሂደት ውስጥ ካለፍን, ከዚያም አልጎሪዝም ብለን እንጠራዋለን. የበለጠ ልዩ እና አዲስ ነገር ከሆነ, ከፍተኛ ደረጃ ንድፍ ብለን እንጠራዋለን. እዚህ ምንም አይነት መደበኛ ልዩነት የለም፡ ሁለቱም የፕሮግራም አብስትራክት ሞዴል ናቸው።

የኮድ ዝርዝር መግለጫ እንዴት በትክክል መጻፍ አለብዎት? ዋናው ነገር: ከኮዱ ራሱ አንድ ደረጃ ከፍ ያለ መሆን አለበት. ግዛቶችን እና ባህሪያትን መግለጽ አለበት. ተግባሩ የሚፈልገውን ያህል ጥብቅ መሆን አለበት. አንድ ተግባር እንዴት መተግበር እንዳለበት ዝርዝር መግለጫ እየጻፉ ከሆነ፣ በpseudocode ወይም በፕላስካል መጻፍ ይችላሉ። በመደበኛ ዝርዝሮች ላይ ዝርዝሮችን እንዴት እንደሚጽፉ መማር ያስፈልግዎታል. ይህ መደበኛ ባልሆኑ ሰዎች ላይም የሚረዳዎትን አስፈላጊ ክህሎቶች ይሰጥዎታል. መደበኛ መግለጫዎችን እንዴት መጻፍ ይማራሉ? ፕሮግራም ማድረግን ስንማር ፕሮግራሞችን ጻፍን ከዚያም አራምን። እዚህ ጋር ተመሳሳይ ነው: ስፔክተሩን ይፃፉ, በአምሳያው አረጋጋጭ ያረጋግጡ እና ስህተቶችን ያስተካክሉ. TLA+ ለመደበኛ መግለጫዎች ምርጡ ቋንቋ ላይሆን ይችላል፣ እና ሌላ ቋንቋ ለእርስዎ ልዩ ፍላጎት የተሻለ ሊሆን ይችላል። የTLA+ ጥቅሙ የሂሳብ አስተሳሰብን በደንብ ማስተማር ነው።

መግለጫ እና ኮድ እንዴት ማገናኘት ይቻላል? የሂሳብ ፅንሰ-ሀሳቦችን እና አተገባበርን በሚያገናኙ አስተያየቶች እገዛ። ከግራፎች ጋር የሚሰሩ ከሆነ በፕሮግራሙ ደረጃ የአንጓዎች እና የአገናኞች ድርድር ይኖሩዎታል። ስለዚህ, ግራፉ በእነዚህ የፕሮግራም አወቃቀሮች እንዴት እንደሚተገበር በትክክል መጻፍ ያስፈልግዎታል.

ከላይ ከተጠቀሱት ውስጥ አንዳቸውም ቢሆኑ ትክክለኛውን ኮድ የመጻፍ ሂደት እንደማይመለከቱ ልብ ሊባል ይገባል. ኮዱን ሲጽፉ, ማለትም, ሶስተኛውን ደረጃ ያከናውናሉ, እንዲሁም በፕሮግራሙ ውስጥ ማሰብ እና ማሰብ ያስፈልግዎታል. አንድ ንዑስ ሥራ ውስብስብ ወይም ግልጽ ካልሆነ, ለእሱ ዝርዝር መግለጫ መጻፍ ያስፈልግዎታል. እኔ ግን እዚህ ስለ ኮዱ ራሱ አላወራም። ማንኛውንም የፕሮግራሚንግ ቋንቋ ፣ ማንኛውንም ዘዴ መጠቀም ይችላሉ ፣ እሱ ስለእነሱ አይደለም። እንዲሁም, ከላይ ከተጠቀሱት ውስጥ የትኛውም ኮድን መሞከር እና ማረም አያስፈልግም. የአብስትራክት ሞዴል በትክክል የተጻፈ ቢሆንም እንኳ በአተገባበሩ ላይ ስህተቶች ሊኖሩ ይችላሉ.

ዝርዝሮችን መጻፍ በኮድ ሂደት ውስጥ ተጨማሪ እርምጃ ነው። ለእሱ ምስጋና ይግባውና ብዙ ስህተቶች በትንሽ ጥረት ሊያዙ ይችላሉ - ይህንን ከአማዞን የፕሮግራም አዘጋጆች ልምድ እናውቃለን። ከዝርዝሮች ጋር, የፕሮግራሞች ጥራት ከፍ ያለ ይሆናል. ታዲያ ለምንድነው ብዙ ጊዜ ያለ እነርሱ የምንሄደው? ምክንያቱም መጻፍ ከባድ ነው። እና መጻፍ ከባድ ነው, ምክንያቱም ለዚህ ማሰብ አለብዎት, እና ማሰብም አስቸጋሪ ነው. ያሰቡትን ማስመሰል ሁል ጊዜ ቀላል ነው። እዚህ ከሩጫ ጋር ተመሳሳይነት መሳል ይችላሉ - ባነሰዎት መጠን ፣ እየሮጡ ይሄዳል። ጡንቻዎትን ማሰልጠን እና መጻፍ መለማመድ ያስፈልግዎታል. ልምምድ ያስፈልጋል።

መግለጫው ትክክል ላይሆን ይችላል። የሆነ ቦታ ላይ ስህተት ሰርተህ ሊሆን ይችላል፣ ወይም መስፈርቶቹ ተለውጠዋል ወይም መሻሻል ሊኖርብህ ይችላል። ማንኛውም ሰው የሚጠቀምበት ኮድ መቀየር አለበት፣ ስለዚህ ይዋል ይደር እንጂ መግለጫው ከፕሮግራሙ ጋር አይዛመድም። በሐሳብ ደረጃ, በዚህ ሁኔታ ውስጥ, አዲስ ዝርዝር መጻፍ እና ሙሉ በሙሉ ቁ ድጋሚ መጻፍ አለብዎት. ማንም ያንን እንደማያደርግ ጠንቅቀን እናውቃለን። በተግባር ፣ ኮዱን እናስተካክላለን እና ምናልባት መግለጫውን እናዘምነዋለን። ይህ ፈጥኖም ይሁን ዘግይቶ መከሰቱ የማይቀር ከሆነ ለምን ዝርዝር መግለጫዎችን ይፃፉ? በመጀመሪያ፣ ኮድዎን ለሚለውጥ ሰው፣ በዝርዝሩ ውስጥ ያለው እያንዳንዱ ተጨማሪ ቃል ክብደቱ በወርቅ ነው፣ እና ይህ ሰው እርስዎ እራስዎ ሊሆኑ ይችላሉ። እኔ ብዙ ጊዜ የእኔን ኮድ አርትዖት በምሆንበት ጊዜ በቂ መግለጫ ስላላገኘሁ እራሴን እሳደባለሁ። እና ከኮድ የበለጠ ዝርዝር መግለጫዎችን እጽፋለሁ. ስለዚህ, ኮዱን ሲያርትዑ, መግለጫው ሁልጊዜ መዘመን ያስፈልገዋል. በሁለተኛ ደረጃ, በእያንዳንዱ ክለሳ, ኮዱ እየባሰ ይሄዳል, ለማንበብ እና ለማቆየት የበለጠ አስቸጋሪ ይሆናል. ይህ የኢንትሮፒን መጨመር ነው. ነገር ግን በዝርዝር ካልጀመርክ እያንዳንዱ የሚጽፈው መስመር ኤዲት ይሆናል፣ እና ኮዱ የማይጠቅም እና ከጅምሩ ለማንበብ አስቸጋሪ ይሆናል።

እንደተናገረው አይዘንሃወር, ጦርነት በእቅድ አልተሸነፈም፣ ያለ እቅድም ድል አልተደረገም።. እና ስለ ጦርነቶች አንድ ወይም ሁለት ነገር ያውቃል። ዝርዝር መግለጫዎችን መጻፍ ጊዜ ማባከን ነው የሚል አስተያየት አለ. አንዳንድ ጊዜ ይህ እውነት ነው, እና ስራው በጣም ቀላል ስለሆነ በእሱ ውስጥ ለማሰብ ምንም ነገር የለም. ነገር ግን ዝርዝር መግለጫዎችን እንዳትጽፉ ሲነገርህ እንዳታስብ እንደተነገረህ ሁልጊዜ ማስታወስ አለብህ። እና ሁል ጊዜ ሊያስቡበት ይገባል. በተግባሩ ላይ ማሰብ ስህተት ላለመሥራት ዋስትና አይሆንም. እንደምናውቀው, ማንም ሰው አስማታዊውን ዘንግ የፈጠረው የለም, እና ፕሮግራም ማውጣት ከባድ ስራ ነው. ነገር ግን በችግሩ ውስጥ ካላሰቡት ስህተት ለመሥራት ዋስትና ይሰጥዎታል.

ስለ TLA + እና PlusCal በልዩ ድህረ ገጽ ላይ የበለጠ ማንበብ ትችላላችሁ፣ ከመነሻ ገጼ ወደዚያ መሄድ ትችላላችሁ ማያያዣ. ያ ለእኔ ብቻ ነው፣ ስለ ትኩረትህ አመሰግናለሁ።

እባክዎ ይህ ትርጉም መሆኑን ያስተውሉ. አስተያየቶችን ስትጽፍ ደራሲው እንደማያነባቸው አስታውስ። ከጸሐፊው ጋር ለመወያየት በእውነት ከፈለጉ, እሱ ከጁላይ 2019-11, 12 በሴንት ፒተርስበርግ በሚካሄደው የ Hydra 2019 ኮንፈረንስ ላይ ይሆናል. ትኬቶችን መግዛት ይቻላል በይፋዊው ድርጣቢያ ላይ።.

ምንጭ: hab.com

አስተያየት ያክሉ