![]() |
Почему програмисты не умеют програмировать?
http://www.codinghorror.com/blog/200...s-program.html
Понравилась статья. Если чесно, я с ходу не понял, в чем фишка, но когда понял, вобщем, у нас появилось два варианта: Код AS3:
Код AS3:
|
Аналогично второму сделал
Кстати, а в чём фишка? |
Бегло прочитал статью, если честно, не очень понятно, как связаны 2 участка кода с указанной статьёй. На сколько я понял, там просто рассказывалось о том, что многие программисты, которые пытаются устроиться на работу не в состоянии написать простую программу.
Что касается 2-х участков кода, которые вы представили: я против записей блоков if/while/for/case с участками кода, которые выполняются после них, в одну строку, например так: Код AS3:
|
Цитата:
|
Цитата:
|
Я всегда пишу так, и мне так больше нравится, но суть не в этом.
В самом начале статьи было написано, что большинство програмистов не способны решить примитивную задачу, и как раз эта задача решается в этом банальном на первый взгляд коде :) Кстати, по производительности первый вариант лучше второго т.как инкремент быстрее модуло, да и при этом инкремент происходит не каждую итерацию. Но фишка не в этом, а в том, что прочитав условие задачи появляется желание найти вариант где бы использовались только два if'a или взаимоисключающие условия, а вот не находится :) |
Цитата:
а почему вы пропустили одно из условий задачи "For numbers which are multiples of both three and five print "FizzBuzz"." ? я не наблюдаю такого трейса.. Код AS3:
|
TERRORist:
там не = а += Но идея интересная, хотя тоже не ахти - тернарный оператор ни чем не лучше if-else ну только что запись немного короче, а с другой стороны - приходится использовать "FizzBuzz", которая явно собирается из двух компонентов, которые так же используются отдельно. + нужно считать модуло каждую итерацию (более накладно чем раз в несколько итераций проинкрементить). + дополнительная операция &&. кстати, для Лиспа можно было бы по-другому и красивше решать, там есть натуральные дроби (или я не знаю, как это правильно называется), в смысле можно 1/3 + 1/3 + 1/3 = 1. |
а, точно, не заметил, сорри
|
Кстати, вот еще экстримальный вариант :)
Код AS3:
|
cуть как в варинианте 2 но на пару символов короче:
Код AS3:
|
Программа пишется для пользователей, которые будут ее запускать на компьютерах.
Приоритеты из этого следуют: Удобная для пользователя Оптимальная нагрузка компьютера. Красивый код. Первый вариант показывает лучшую скорость – он самый правильный ) |
такой еще
Код AS3:
|
Цитата:
|
Самое интересное, что в оригинальной статье все, без исключения использовали модуло (ну, из тех, кто пытался написать примеры). Правда, там больше VB / C# людей.
|
Да и по модулю нормально тоже. Просто все увлечения на тему вот таких выражений
Код AS3:
|
@Iv
Это чисто Flash и JS разработчики могут допустить ошубки в коде меньше 1000 строк ^_^ |
По-моему что-то типа второго наиболее читабельно. 0 == (i%n) - i кратно n. Понять, что за инкременты и вообще переменные в 1-м варианте не так просто. Может, кому как, конечно. Думаю в таких задачках решает именно читабельность (и скорость их написания).
Кстати, думаю проще замерить то, что 1-й вариант жрёт больше памяти, чем то, что он быстрее =) |
Nirth, а знаешь как правят ошибки на системах, на которых нельзя их допускать (ну, например система бортового управления или ещё чего?)
Пишут код, и считают количество строк. Они знают, что в n строчек в среднем m ошибок, и они сидят и ищут эти ошибки, пока не найдут =) Идиотизм, но Россия.. непобедима. |
Psycho Tiger
Ну я последние полгода работал в телекоме. Там просто тест каждой версии идет в 3 фазы, по 3 недели каждый. Хотя метод с "есть ошибки" забавный да ^_^ |
А вот собственно, решение на божественном языке :)
Код:
#!/usr/bin/sbcl --script |
Scheme или Common Lisp ))?
|
CLisp :)
|
Код AS3:
это ничего не выводит. хм. :rolleyes: тогда так Код AS3:
|
Scala?
|
Ага ))
|
Раз уж пошли "божественные" языки..))
Код AS3:
|
Prolog
Код AS3:
Добавлено через 23 минуты Кстати, старый добрый ActionScript, тоже может тянутся на Олимп: Код AS3:
|
практически аналог эрланговского кода на AS3 :
Код AS3:
fizzBuzz(1,256); UPD: странно..никакого переполнения не наблюдаю))))) UPD2: таки наблюдаю на fizzBuzz(1,5552); :) Цитата:
|
Ну кстати, tail рекурсией, можно сделать вызов setTimeout ^_^ и обойти переполнение стэка
|
Цитата:
|
Ну и еще немножко эзотерики :)
Код:
<?xml version="1.0" encoding="ISO-8859-1"?> |
о, е
где-то читал/слышал, что полиглолты мыслят гораздо свободнее/складнее, чем моноглоты (сори - нет наверное такого термина, но это такой перец, который дальше того, что сам знает не думает..) wvxvw для нас в этом смысле просто удача удача в том смысле, что он есть и свои мысли сюда трансрутует |
ну справедливости ради я скажу, что Lisp и Prolog используются в индустрии. На лиспе часто прототипируют ИИ. Пролог используется активно в биологии.
Доля Эрланга растет. Это я к тому, что если уж говорить об изотерике – нужно вспомнить про Whitespace ! |
Цитата:
|
Ну, на Whitespace я не смогу :) Да и запостить его на форум тяжко будет :) А вообще, ну так же по жизни приходится, можно подумать, что никому не приходилось BAT файлы писать, а это вообще по идеологии очень далеко от AS3. Ну и в том числе со всякими серверными языками разбираться, тот же SQL, который тоже вобщем-то почти ни на что не похож.
|
Ну первое что приходит в голову на SQL
Код:
CREATE DEFINER=`root`@`localhost` PROCEDURE `loopFizzBuzz`() |
Цитата:
А вообще расширенный кругозор - это расширенный кругозор) Ничуть не жалею о выученном в детстве фортран (учил без компа по случайно найденному отцовскому учебнику) также Basic а -ля спектрум, и всяким страшным из института: форт, asm, pascal, c++ итп.. - реально на них не приходилось кодить (кроме плюсов) а фан хороший) хороший сайтик есть: http://progopedia.ru там на каждом языке - хелловорд, алгоритм вычисления фибоначчи и факториала - очень интересно посмотреть. Кстати там ни слова о Нашем - зарегился даже чтоб статью там написать - руки не доходят.. может у кого дойдут? PS: я вот как-то застрял последние лет пять на ас.. надоел жутко - сейчас срочно осваиваю эрланг и c#. java почему то не пошла - язык в принципе выучил и даже кое-что серьёзное на нём делал, но как -то душа не лежит. попробовал плюсы вспомнить - забил, споткнувшись об сложность всяких дефайнов и кучу библиотек. сами языки вообще выучить легко. самое сложное - это обвязки, исключения из правил, парадигмы итп, осознание которых приходит только с реальным опытом работы. сорри за такой личностный оффтоп - просто накипело))))))) |
Пытался попроывать собать на Ruby в одну строчку, но получился клон Erlang ( Котяры ), но не удалять же не засветив ^_^
Код:
#!/usr/bin/env ruby |
| Часовой пояс GMT +4, время: 19:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.