Stuffcheck

Π‘Π»ΠΎΠ³ ΠΎ практичСском ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, систСмном Π΄ΠΈΠ·Π°ΠΉΠ½Π΅, инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ создании быстрых минималистичных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Β· 2 ΠΌΠΈΠ½ чтСния Β· Π”ΠΆΠ΅Ρ„Ρ„ Π­Ρ‚Π²ΡƒΠ΄ Β· Coding Horror

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

Как ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ пояснСния ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ°Ρ докумСнтация роТдаСтся Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅

Если ΡƒΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² Ρ€Π°Π±ΠΎΡ‚Π΅, Π·Π½Π°Ρ‡ΠΈΡ‚ Π»ΠΈ это, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строчку? Π§Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ усСрдиС быстро ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт Π² Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΡƒΠΌ.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€ΠΈΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ коммСнтирования:

'*************************************************
' Ѐункция: CopyString
'
' НазначСниС: ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ строку ΠΈΠ· исходного источника (source) Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ (target).
'
' Алгоритм: ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ source, посимвольно ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π² target,
' инкрСмСнтируя индСкс массива.
'
' Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: source β€” исходная строка
' Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: target β€” скопированная строка
'
' Автор: Π”ΡƒΠ°ΠΉΡ‚ К. ΠšΠΎΠ΄Π΅Ρ€
' Π”Π°Ρ‚Π°: 01.10.2004
' Π’Π΅Π»Π΅Ρ„ΠΎΠ½: (555) 222-2255
' Π›ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ: Pontiac Aztek
'*************************************************

Π’Π°ΠΊΠΈΠ΅ «простыни» Π½Π΅ нСсут практичСской цСнности: ΠΎΠ½ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ сигнатуры.

Π’Ρ€ΠΈ уровня Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ВзглянитС Π½Π° ΠΊΠΎΠ΄ Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²:

r = n / 2;
while (abs(r - (n / r)) > t) {
    r = 0.5 * (r + (n / r));
}
System.out.println("r = " + r);

Бинтаксис понятСн, Π½ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° скрыто Π·Π° абстрактными ΠΎΠ΄Π½ΠΎΠ±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ:

// ВычислСниС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΡŒΡŽΡ‚ΠΎΠ½Π° β€” Рафсона
r = n / 2;
while (abs(r - (n / r)) > t) {
    r = 0.5 * (r + (n / r));
}
System.out.println("r = " + r);

Π’Π΅ΠΏΠ΅Ρ€ΡŒ смысл ясСн, ΠΎΠ΄Π½Π°ΠΊΠΎ сам ΠΊΠΎΠ΄ остался нСвнятным. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” вынСсти Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ с говорящим ΠΈΠΌΠ΅Π½Π΅ΠΌ:

private double approximateSquareRoot(double number, double tolerance) {
    double root = number / 2;
    while (Math.abs(root - (number / root)) > tolerance) {
        root = 0.5 * (root + (number / root));
    }
    return root;
}

System.out.println("r = " + approximateSquareRoot(number, tolerance));

Код стал понятным Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ строчки пояснСний. Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ осмыслСнныС ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ читаСмости Π½Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½Π΅ сущСствуСт

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ часто ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ. ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ пытаСтся ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ тСкстовыми пояснСниями. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ спСциалист сначала ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ саму структуру ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, устраняСт ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты ΠΈ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°.

ВСкст Π½Π° СстСствСнном языкС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ мастСрства. НСчСтко сформулированный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅Ρ‚ читатСля сильнСС, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ отсутствиС.

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹ΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ прост: Π΄ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Π΄ΠΎ состояния, ΠΊΠΎΠ³Π΄Π° Π² пояснСниях ΠΎΡ‚ΠΏΠ°Π΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли послС всСх этапов Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ ограничСния ΠΈΠ»ΠΈ внСшниС трСбования β€” зафиксируйтС ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ.