Набрёл случайно на community
code_wtf. Особенно интересным оно мне не показалось, но вспомнил о замечательном WTF, который лично автор этих строк когда-то нашёл в boot-code нашей системы, и потом долго и с воплями бегал по конторе, всем показывая. Код, кстати не наш, а IBM...(
Read more... )
Comments 17
Код глючной, конечно, но язык, который позволяет к символу прибавить число без явного преобразования типов, сам на такое наталкивает. И не надо отмазываться, что язык писался давным-давно, когда компьютеры были большими. В том же Паскале пришлось бы писать что-то вроде if (in (['A'..'F']+['a'..'f'])) then rc = Chr(Asc(in) + Asc('A') - 10 )
Reply
А чего бы я иначе подпрыгивал?
Код глючной, конечно, но язык, который позволяет к символу прибавить число без явного преобразования типов, сам на такое наталкивает. И не надо отмазываться, что язык писался давным-давно, когда компьютеры были большими.
Авторы языка не виноваты, что язык приобрёл такую дикую популярность... Они, по сути, макроассемблер для PDP-11 писали... И очень неплохой у них макроассемблер получился... А то, что сейчас на нём все и пишут, а красоты типа Algol-68, Simula etc. - более или менее забыты, наверное, говорит и о том, что именно этот язык и был нужен человечеству...
В том же Паскале пришлось бы писать что-то вроде if (in (['A'..'F']+['a'..'f'])) then rc = Chr(Asc(in) + Asc('A') - 10 )
На Паскале пришлось бы писать что-то вроде if (_in in [10..16])) then rc = Chr(Asc('A') +_in - 10 );
Reply
Вообще, большинство проблем с С и С-подобными языками идут из нескольких давно известных мест:
- необходимость явно писать break после switch;
- дурацкая ситуация, когда для сравнения используется не знак равенства, а что-то ещё;
- дурацкая ситуация, когда результат присваивания сам является выражением, которое можно использовать дальше. особенно вкупе с предыдущим пунктом. можно было явно оговорить одно исключение вроде a=b=c=0. , но во всех остальных случаях запретить. Хочешь использовать результат присваивания - будь добр, разбей на две строчки
- и конечно, совместимость типов.
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment