14.02.2017, 18:44 | #101 |
Участник
|
А ещё бы я обратил внимание на стиль кода:
X++: using System.Numerics; class fibb { /// <summary> /// Runs the class with the specified arguments. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main(Args _args) { int fibonacciSize = 10000; int i; BigInteger x = 0; BigInteger y = 1; BigInteger z; for(i=0; i<fibonacciSize; ++i) { z = BigInteger::Add(x,y); //info(z.ToString()); x = y; y = z; } info(strFmt("last num: %1", z.ToString())); } } X++: for(i=0; i<fibonacciSize; ++i) X++: ++i |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
15.02.2017, 09:18 | #102 |
Участник
|
Цитата:
Кстати, программирование без пробелов распространено в 1С, в самой популярной системе среди программистов. Может быть Маззи пытается таким образом повыстить популярность Аксапты. Может быть, в программирование без пробелов он вкладывает более глубокий смысл. А может быть, это просто гениальное чутье. |
|
15.02.2017, 10:33 | #103 |
Участник
|
в акс7 и в c# пробелы расставляются по-разному.
причем внутри МС очень жестокий контроль несоответствия бест-практису - несоответствующее просто не билдится. поначалу было непривычно. потом перепривык. теперь расставляю хаотически и смотрю ошибки компиляции от бест-практиса ))) префиксный ++ остался еще с C, где способ записи имел значение. оба способа могут выстрелить в колено. но префиксный был быстрее в общем случае. интересная статья и комментарии про задачи на собеседованиях http://alenacpp.blogspot.co.uk/2005/...ce-points.html AP-1055D подметил совершенно точно - стиль, который выдает... ))) и таки да, я очень любил на собеседованиях задавать вопрос "что не нравится?" ответ на этот вопрос лучше всего показывает с чем человек работал. в частности, AP-1055D не понравился стиль. ок. почему бы и нет? но сразу понятно что человек очень долго работал с продуктом, где применяется только такой стиль, чтобы считать такой стиль каноном )))) Последний раз редактировалось mazzy; 15.02.2017 в 10:44. |
|
|
За это сообщение автора поблагодарили: Ace of Database (3). |
15.02.2017, 10:47 | #104 |
Участник
|
Цитата:
Сообщение от mazzy
последнее рассчитанное число:
54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501 |
|
15.02.2017, 11:36 | #105 |
Moderator
|
Цитата:
Поэтому конструкция a=*(--ptr) и a=*(ptr++) транслировались в одну машинную команду, а конструкции a=*(ptr--) и a=*(++ptr) - в две. Аналогично - операции ++ и -- были введены как раз потому что в PDP-11 были специальные машинные команды INC и DEC, которые увеличивали или уменьшали операнд на единицу и работали занимали меньше памяти и работали чуть быстрее чем обычные операции сложения и вычитания. |
|
15.02.2017, 12:09 | #106 |
Участник
|
)))))))))
да, и использование машинной инструкции привело к огромным последствиям впоследствии. даже не столько из-за отсутствия инструкций на некоторых процессорах. сколько из-за логических проблем с сущностью, которую впоследствии назвали "точки следования" |
|
15.02.2017, 12:19 | #107 |
Участник
|
Цитата:
возвращаясь к более привычным архитектурам. префиксные ++ -- компилировались в прямой поток инструкций постфиксные ++ -- как правило приводили к тому, что сначала промежуточный результат куда-то сохранялся, затем инкрементировался, сохранялся, затем восстанавливался. во времена, когда оптимизаторы были глупенькими и наивными это еще имело значение |
|
16.02.2017, 14:31 | #108 |
Участник
|
А в Qlik Sense с помощью кода:
X++: Let n = 50; For v = 0 to n If v = 0 then Let f = 0; ElseIf v = 1 then Let f = 1; Else Let f = f_2 + f_1; End If; Fibonacci: Load * Inline [ N, F $(v), $(f) ]; Let f_2 = f_1; Let f_1 = f; Next А чтобы вычислить n-значение можно использовать матричную алгебру: X++: Let f00 = 1; Let f01 = 0; Let f10 = 0; Let f11 = 1; Let m00 = 1; Let m01 = 1; Let m10 = 1; Let m11 = 0; Let v = n; Do while v > 0 If Mod(v, 2) = 1 then Let a = f00 * m00 + f01 * m10; Let b = f00 * m01 + f01 * m11; Let c = f10 * m00 + f11 * m01; Let d = f10 * m01 + f11 * m11; Let f00 = a; Let f01 = b; Let f10 = c; Let f11 = d; End If Let v = Div(v, 2); Let a = m00 * m00 + m01 * m10; Let b = m00 * m01 + m01 * m11; Let c = m10 * m00 + m11 * m01; Let d = m10 * m01 + m11 * m11; Let m00 = a; Let m01 = b; Let m10 = c; Let m11 = d; Loop Fibonacci: Load * Inline [ N, F $(v), $(f10) ]; Последний раз редактировалось AP-1055D; 16.02.2017 в 16:00. |
|
20.02.2017, 10:27 | #109 |
Участник
|
С помощью JavaScript:
X++: var n = 10; var data = []; var f, f_1, f_2; for (v = 0; v <= n; v++) { if (v === 0) { f = 0; } else if (v === 1) { f = 1; } else { f = f_2 + f_1; } data.push({ name: v.toString(), value: f }); f_2 = f_1; f_1 = f; } Highcharts.chart('container', { series: [{ type: "treemap", data: data }], title: { text: 'Fibonacci numbers' } }); Последний раз редактировалось AP-1055D; 20.02.2017 в 10:29. |
|
20.02.2017, 21:40 | #110 |
Участник
|
... а вот кто напишет для машины Тьюринга алгоритм вычисления "Фибоначчи" ? ))
|
|
04.03.2017, 21:47 | #111 |
Участник
|
Немного в тему тут.
Цитата:"Дэвид Хэнссон, создатель Ruby on Rails, признался в своём твиттере, что не написал бы сортировку пузырьком на доске. Дэвид подсматривает код в интернете всё время: :" |
|
09.03.2017, 21:01 | #112 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Julieta (1). |