SDKNet
02.07.2006 18:31:35Вброс свободного кода!
Читайте далее »
Вброс свободного кода!
Читайте далее »
Из-за повышенного уровня собственного разгильдяйства приходится в срочном порядке воевать с зеленым монстром, поскольку сдавать осенью экзамен на последней сессии как-то несолидно. Да и вообще, осенью я еще ничего не сдавал, нечего и начинать, неаккуратно это. Однако, в процессе борьбы появляются всякие интересные наблюдения.
Читайте далее »
Очень правильное замечание относительно конструкторов. Впрочем это могло бы быть решено в стиле Obj(this = that, smth = other, blah = bleh);, как оно имеется в некоторых других языках.
Ну денек. Прибежал в универ в 14:30. Уплелся в 21:30. Самое главное, пожалуй — посетил лекцию Бертрана Мейера (Bertrand Meyer), который прибыл в наш славный универ для получения звания почетного доктора. Перед лекцией Мейера еще зажег наш профессор Шалыто, по-другому не скажешь, именно зажег. Побольше бы таких бодрых профессоров (а ведь у кого-то он еще и ведет!).
Читайте далее »
Вчера накорябал чуть меньше двухста строчек дикой математики на Питоне. Классы там на фиг не нужны были, и, в общем-то не многое успел осознать из того, что сделал. Но смотрится неплохо, вспоминал PHP, радовался отсутствию «$». Запомнилось и въелось в память одно — в Python нет ограничений на размерность целых чисел, он сам разберется, откуда брать не 32, и не 64 разряда, а сколько надо. Пока память есть. Что чудовищно радует — как-никак, нормальная математика в языке возможна, да точные расчеты.
Пожалуй, надо его на место основного скриптового языка для себя ставить, PHP я уже успел забыть (хотя пару мелких скриптов пару месяцев назад писал), а Python давно использую в интерактивном режиме… в качестве калькулятора. 😉 Так вот вроде повод изучить поплотнее.
Интересно получается. Пишешь переносимое приложение. Пишешь для GNU/Linux на i386. Фактически, уже написал. Но поиспользовал пару «интересных» ioctl для последовательного порта, что для переносимости плохо. Ну, еще чуть-чуть pthreads. В ожидании хорошего геморроя перетаскиваешь все это на FreeBSD/amd64. Компилируешь из тех же исходников. И собирается на раз. Без каких-либо модификаций.
Что еще смешнее — на FreeBSD все работает без ошибок. На GNU/Linux появляется не очень пока что понятная (но явно мелочная) ошибка.
Круто.
P.S. Ошибка действительно идиотская была. Теперь все тип-топ с обеих сторон. Из совершенно идентичных исходников.
Интересно, что когда нужно писать код, писать его ужасно не хочется. Хочется писать/переводить ближе к родному языку, а не C. При этом, когда надо что-то уже написать/перевести, резко появляется желание что-нибудь написать в коде, пусть даже и на C. Ужас.
Цитата с сайта Михаэля Франца:
Verification also ensures control-flow safety, but this is a comparatively trivial task. Conversely, verifying that the data flow is well-typed is rather complex. The JVM bytecode verifier uses an iterative data-flow analysis algorithm for this task, and unfortunately, this algorithm has an execution complexity that rises quadratically with program length. This gives rise to my prediction that we will soon witness denial-of-service attacks on mobile-code systems that will exploit the algorithmic complexity of the verifier itself: By sending a legal, but difficult-to-verify program to a server virtual machine, one can keep that server occupied for an inordinate amount of time, effectively making it unavailable for useful work. In my experiments, a 4kByte JAR file containing Java code with worst-case verification complexity required more than 15 minutes of verification time on a 2.4 Gigahertz Pentium IV processor.
Только что дочитал сабж. Очень жалею, что не завершил ранее, текста немного, но реально еще раз показывает, насколько в глубокой заднице находится наша замечательная IT-индустрия. Год публикации, чисто для справки, 1997.
Хотя еще больше это показывает то, какие технологии были разработаны в рамках семейства Oberon и когда. Динамическая реоптимизация всей системы — в каком-то уголку сознания у меня давно такие мыслишки шатаются, а тут на тебе — уже сделано. Эх.
Busybox (shell/ash.c):
for (p = name; *p; p++) {
Свежак:
Не, я не могу, такие шедевры надо целиком.
for (p = name; *p; p++) { if (*p == '*' || *p == '?') metaflag = 1; else if (*p == '[') { char *q = p + 1; if (*q == '!') q++; for (;;) { if (*q == '\\') q++; if (*q == '/' || *q == '\0') break; if (*++q == ']') { metaflag = 1; break; } } } else if (*p == '\\') p++; else if (*p == '/') { if (metaflag) goto out; start = p + 1; } }