- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
#include <stdio.h>
#ifdef DEBUG
#define TRACE printf
#else
#define TRACE(...)
#endif
#define DEF(type, name, ...) type name __VA_ARGS__ { TRACE("<вызвали " #name ">");
#define RET(name, ret_val) {TRACE("<" #name " не упала>"); return (ret_val);}
#define END(name, ret_val) RET(name, ret_val);}
DEF(int, main, (int argc, char **argv))
puts("Моя супер-мего отладка ;D");
END(main, 0)
1) Я придумал foo
2) интересно, а нет-ли готовых решений...
3) ого, оказывается есть FooServer и книга и статья википедии
Потом оказалось что все это уже сделали до меня и намного лучше
Идея была классная, но ее по какой-то причине признали "нинужным гавном", теперь за упоминание AOPа бьют лицо
Ты хоть на дату смотри.
AspectJ занял почетную нишу рядом с EJB, WebSphere и пр
Тебе то это зачем, сема?
-- Peter Norvig
Именно поэтому я за...
https://docs.hhvm.com/hack/lambdas/introduction
буэ
Что они ухудшили?
охуенно!
даже в современном JS можно ()=>{}
Жалко слово «function» что ли написать? Экономим байты, как на «Спектруме»?
Открой для себя babel
>>Жалко слово «function» что ли написать?
жалко, как и return.
Лямбда должна быть такой
names = duraki.map {|p| p.name}
или так
names = duraki.name( p -> p.name)
//а это фигня
name = duraki.each( function(petuh) {return petuh.name })
на самом деле даже в жабе восьмой примерно такие лямбды
Даже в сорта сишечки их завезли
В каком ещё языке есть вот такие палки: |p| ?
Модуль p?
> NSLog
Если Objective-C — сорт сишечки, то SETL — сорт Алгола, Javascript — сорт Java, Бейсик — сорт Фортрана, а 1С — сорт русского языка.
факториал же */[1..n]
Хотелось бы увидеть что-то подобное в языках типа Си или Паскаля. Всё-таки паскалевские множества — это костыль.
Да, арифметика множеств в питонии это няшно
ибо абидинять?
- разность
+ объедение
Есть цикол for/in.
пруф!
А остальное было.
http://www.pascal-central.com/docs/iso7185.pdf
вот по этому я за "Pascal'
В стандарте extended pacal вроде бы, не помню точно, сказано, что не боьше 255 лементов.
Это не ркг
он бы написал "--"
Это моё мнение.
Хранение set of word потребовало бы уже 65536/8 = 8 килобайт, что по тем временам было жирно (сегмент данных в Турбо Паскале был ограничен 64 килобайтами; под кучу для программ реального режима обычно оставалось около половины мегабайта).
Сегмент в реальном режиме был ограничен размером регистра смещения:)
Но умел ли паскаль хранить данные в нескольких сегментах (с дальними указателями на них) я хз
Начиная с четвёртой версии, перешли на экзешник и все указатели стали дальними (у функции с атрибутом near теперь нельзя взять указатель). Но сегмент памяти (для глобальных переменных) был один. Если не хватает 64 килобайт, используй кучу.
Модель huge с автоматическим переключением сегментов для Турбо Паскаля не реализовали (хотя в Турбо Си она была), поэтому размер массива был ограничен размером регистра смещения. Т. е. в TP можно было выделить в куче кусок размером в полмегабайта, но целиком отобразить на массив его было нельзя, обходить его надо было маленькими шажками. Например, отобразить начало на массив размером 64 К, потом подвинуть указатель и поработать со следующими 64 К...
правда референсы, но референс это авторазыменовывающийся константый не lvalue указател
The largest block, that can be safely allocated on the heap at one time is 65,528 bytes (64K - $8).
Но у меня в голове часто путается борланд си и борланд паскаль: в си были huge поинтеры а в поскале не было
8 баксов за 64 килобайта? Богатые, наверное.
Гена говорит: нам Шапокляк дала $10, каждому по 8
Чебуршка говорит: так не делица же!
Гена отвечает: а меня не волнует, я свои 8 забрал
Шапокляк услышала, и говорит: ламеры ебаные
Это через функции DOS можно было отхватить больший кусок. Максимальный размер MCB — 64 килопараграфа, т. е. 1 мегабайт. Можно было отжать всю conventional память.
P.S. Я просто привык, что в более-менее серьёзных программах было принято выделять память в обход стандартной библиотеки: через MCB, если хватало мегабайта; через XMS и EMS, если не хватало (тот же TEMSStream в Turbo Vision). Наконец, в TP 7.0 можно было использовать защищённый режим (хотя и сегментированный).
А если нужна совместимость с XT, то да, оверлеи были необходимы.
но там редко было так уж много памяти и свеч оно не стоило
А ещё у x86 были BSF и BSR... Жаль, они были недооценены языкостроителями.
Я вот know for sure что у С++ была опция "генерировать код для 8086/8, 286 или 386" и там еще была опциия "юзать реальный FPU або эмулить плавающего питуха" (бо fpu в первых писи могло и не быть)
Частично это можно было исправить, если переписать библиотечный модуль System (некоторые его функции использовались компилятором как inline).
А ещё был неофициальный TPU peephole optimizer, который в уже скомпилированных TPU (с включенной отладочной информацией) производил оптимизацию под 386 и более новые. Вот эта легендарная программа:
http://www.ishodniki.ru/list/info.php?id=3854
Ламеры, не знающие такой директивы, недоумевали, почему тип Real работает (это полностью софтовый 48-битный тип), а Single/Double/Extended — нет.
А опции нельзя было включать через настройки IDE, чтобы они епередавалась копулятору? или надо было тока мокросом таким вот?
Можно было сделать эту опцию по умолчанию включённой для всех проектов. Но опять же для этого нужно было знать, куда лезть. Поди высшее образование нужно, чтобы разобраться в IDE, а у нас готовят математиков.
А время паскалирования я был совсем мелкий и умел только Ctrl+F9 и F2.
Я даже не уверен что я умел дебагер паскаля.
Еще умел менять размер сетка почему-то, видимо миня научили бороть stack overflow
м ставмшь где надо крестики, но с директивами копулятору ты типо крутой прогер.
как-то так.
а еще с асмовставками:)
Без них режим 13h с 256 цветами не включишь, ещё можно VESA но он сложнее.
Это цари не любили модуль Graph (типа у него анскилльный пирфоманс) и использовали асмовставки...
акромя того писять все равно надо было в память напрямую (иначе бы оч сильно все турмозило)
просто в dos.h был для этого API
В память напрямую в Турбо Паскале можно было писать через псевдомассивы Mem, MemW, MemL (они отображались на первый мегабайт ОЗУ 1:1) или через каст целого питуха к указателю. Обращение к портам ввода-вывода было через псевдомассивы Port, PortW, PortL (в версии для защищённого режима этих псевдомассивов не было, ибо для третьего кольца это харам, а кто пишет для нулевого, тот не поленится использовать асмовставку).
Была и функция Intr для вызова прерывания.
Я из сисечки со всем оборудованием работал напрямую, и с fdd и с контроллер пррвыаний и кловиатуры и писиспикером
Строго по Журдену же
И мне хватало in/out, прямого доступа кастом к указателю и int
Обработчик пррвыаня клавы по умолчанию (от доса или биоса наверное) копил в буфер нажатия и начинал противно пищать
Для игр это не подходило, приходилось писать свой
и да: надо было потом котроллеру сказать что ррвыне обработано
но я все это делал уже на сишечке, но думаю что тоже саамое можно было и на поцкале конечн
я делал 13h без асма
а
planes ебуче
один пиксел из трех несмежных областей памяти
не напоминайте
http://www.helloworld.ru/texts/comp/games/dos/vesa/vesa.htm
Можете помастурбировать поностальгировать...
VGA вообще была страшная, у нее было охулион всего и это всё смотрелона мир через пару маленьких окошек и треба было писать в IO чтобы оно повернулось к тебе нужным бочком
Я потом на пинду перешел, а там GDI и device context и можно ниачем не думать
я так щаслив был
а в какой-то момент он джаже вообще полностью был софтварным (в висте кажется, когда дисплей менеджер завезли)
но мне было пофиг
я тока двумерные игрушки писал, три де нинужно
* https://en.wikipedia.org/wiki/Hamurabi_(video_game)
Даже в прошивке БК-0010 был интерпретатор «ФОКАЛа», если я не ошибаюсь. Или на кассете из комплекта... Но звали его обычно не «ФОКАЛ», а «ФАКОЛ». FUCK ALL.
http://www.computinghistory.org.uk/userdata/images/large/44/26/product-74426.jpg
там в Bios Data Area были байты
Кстати, а как перо работало? Фотоэлемент?
A light pen detects changes of brightness of nearby screen pixels when scanned by cathode ray tube electron beam and communicates the timing of this event to the computer. Since a CRT scans the entire screen one pixel at a time, the computer can keep track of the expected time of scanning various locations on screen by the beam and infer the pen's position from the latest timestamp.
Выходит что работает тока на ЭЛТ и надо знать развертку
Теперь понятно почему оно втыкалось в видеокарту
http://zvonoknaurok.ru/Kirill/156/25.jpg
Кстати, у EGA вывод был цифровой, только у VGA аналоговый
И Пёрьев там не стало
совпадение?
не думаю!
У EGA ЦАП был в мониторе. Ну какой ЦАП? Матрица R-2R, которую Борманд на коленке спаяет. Для каждого канала (R, G, B) было по два провода (не считая «земли»), что давало по четыре уровня сигнала. Итого EGA в принципе не могла отображать больше 64 цветов (чтобы экономить видеопамять, одновременно использовалось только 16 из 64 возможных).
Когда изобретали VGA, решили, что 64 цветов мало. Новые провода решили не добавлять, а то жгут слишком толстый получится, поэтому ЦАП перенесли из монитора в видеокарту. Теперь на канал достаточно одного провода, а максимальное количество цветов определяется разрядностью ЦАП в видеокарте.
Вот и вся разница.
Зато узнал, чем VGA отличается от EGA.
В "PHP" ничего этого нет
DAC и есть DAC, даже не сложный)
У некоторых вон до сих пор VGA торчит (особенно это смещно в LCD), но у нормальеных людей конечно уже лет 10 как TMDS: DVI или HDMI или еще чтонить такое же цЫфровое
Ещё можно сказать, что использовалась PCM (ИКМ — импульсно-кодовая модуляция; однобитовая, ага). Ну чтобы побольше умных слов использовать.
Надо говорить отладчик и компоновщик а не дебагер и компилятор
>> импульсно-кодовая модуляция
И кстати когда я говорю про звуковую карту, про кто как она звук синтезирует, я говорю именно PCM, а не ИКМ
Это плохо?
Первый пример кодирования информации и передачи ее на расстояние это греки, которые там костры зажигали на холмах.
Это тоже модуляция.
Я правильно понимаю что он мог адресовать 2^1 бит информации?
Не очень-то развернешься
Ножка для данных была одна. Опять же откуда брать данные — забота внешнего устройства.
>>Ножка для данных была одна.
ГАРВАРДСКАЯ РАХИТЕКТУРА!!11
У него был вывод JMP, который сигнализирует внешнему устройству, что следующую инструкцию пропускаем. В общем, можно было сделать JMP на длину одного бита и только вперёд.
Несколько страниц по организации циклов и ветвлений.
Как я и предполагал, запоминать адрес возврата для организации подпрограмм должна обвязка.
https://www.youtube.com/watch?v=gI8luQnyM9A
тащемто там стоит тока первые 15 сек посмотреть
https://ideone.com/xGoNTI
лет двадцать назад их регулярно путали
https://codepen.io/jcoulterdesign/pen/NOMeEb
но вообще
http://my-codeworks.com/blog/2015/css3-proven-to-be-turing-complete
В CL (и ELisp) документация является частью синтаксиса defun. Эту документацию можно получить в рантайме.
т.е. сравнивать надо с питоньими докстрингами.
все IDE это делают
Не режут. Мне режут глаза парные 'апострофы' вместо кавычек в некоторых языках. То ли дело `M4'. Хотя всё равно выглядит как ‘говно’.
>> То, что | в математике и рубе парные, но значат разные вещи, а в сишкоподобных языках это бинарный оператор глаза не реже?
За это вообще бы поубивал. Борманд снёс таблицу в БД из-за этой неоднозначности:
http://govnokod.ru/13032
Это немного другое, SQL язык стандартизированываный, и Брандом думал что знает, что пишеь, но мускуль усьроил ему подьёбку. В своих языках разработчики используют ту систему обозначений, которую считают удобной, допустим в баше ебанутая булева логика, но зато делайраз&&делайдва&&делайтри удобно юзать и читать.
http://lurkmore.so/images/c/ce/Svidetel.jpg
http://www.apple2.org/
http://govnokod.xyz/_25036/#comment-398955
Почему этот сервис нельзя было написать на "Python" или "Java" (не пися уже о "PHP")?
Вероятно, Google Flights стоит не только из них
Просто когда-то была компания ITA, в которой работали лиспофанатики, у которых был самый шустрый поисковый движок для полётов, в большой степени написанный на лиспе. Потом эту компанию купил Гугл. Всё тоже самое можно было сделать и на C++, разумеется.
--Лейтенант, говорят у вас там педерастия процветает
--Извините товарищ майор, разберемся
[через сутки]
--Товарищ майор, педерастии не обнаружено: ни у кого из бойцов хуй говном не пахнет, лично всех проверил
Но понятнее ли?
PHP очень вербозный