- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
PureBasic
================================================================================
Define size, *mem, str$
If ReadFile(1,"file.exe")
size = Lof(1)
If size = 0
Debug "Файл пустой"
Else
*mem = AllocateMemory(size)
If *mem
ReadData(1, *mem, size)
;Делаем то, что нужно с памятью. Например, выведем первые 30 байтов файла
For i = 0 To 29
str$ + RSet(Hex(PeekB(*mem + i), #PB_Byte), 2, "0") + " "
Next
Debug "Первые 30 байтов"
Debug str$
FreeMemory(*mem) ;Не забываем очищать память!!!
EndIf
EndIf
EndIf
EndIf
EndIf
ненавижу бейсик
fi
fi
Ненавижу баш.
да и ада (да, Тарас?)
таких уёбищ много
}
}
например
тут вообще питон, но сайт зохавал пробелы
А что плохого-то, это же шаг вперёд по сравнению с.
(там вообще крайне много говна, так что это просто одна из каках в общей куче)
это никакой не шаг вперед, наоборот, это атавизм
Разве что со злым умыслом.
Когда любой блок (даже из одного оператора) надо явно оборачивать в скобки - тогда эти проблемы исчезают.
> эти проблемы исчезают.
Этих надуманных проблем и так нет. Если код без скобок будет непонятным - я тупо поставлю скобки. Без скобок я пишу только такие штуки: И после таких блоков обычно ставлю пустую строку (ее все равно почти всегда там приходится ставить, чтобы разделить смысловые блоки).
Поправочка: вменяемый компилятор.
Кстати нормальный компилятор отшибает и почти все выдуманные паскалистами проблемы с = и ==.
Если у человека нет самоконтроля и чувства меры - он и на паскале напишет нечитаемую и вылетающую хуиту. Там ведь тоже, внезапно, есть работа с сырой памятью и указателями. Ну разве что адресной арифметики нет.
Ведь блин, можно было же сделать так, чтобы на самом низком уровне были лишь
dangerous_pure_array<T, N>
и
dangerous_pure_pointer<T>, и не было бы никакого способа написать их короче.
Но к сожалению, в реальной жизни есть выбор межу int[5] и std::array<int,5>, это очень плохо, соблазн вызвать короткую форму очень велик.
Правильная парадигма: легче всего написать самый безопасный вариант (а скорость - вопрос оптимизации и отключаемых в релизе проверок).
Детектор упоротого крестушка: он считает, что правильная парадигма - это в которой легче всего написать самый быстрый вариант в ущерб безопасности.
И называется эта парадигма... java. Правда проверки никак не убираются, если JIT не уверен в результате.
> не было бы никакого способа написать их короче
Ну reinterpret_cast неспроста же так назван... Хотя всемогущий сишный каст все равно оставили ;(
Ну а самый главный фейл крестов в том, что их пытались сделать совместимыми с сишкой (когда-то они были банальным фронтендом для оной). Тут я с тобой согласен. И этот фейл усиливается тем, что большинство преподов, книжек и сайтов начинают учить крестам именно с их сишного наследия.
Поэтому называется сия парадигма не Java, а Ada. Там по умолчанию даже указатели на переменную брать нельзя.
> Ну а самый главный фейл крестов в том, что их пытались сделать совместимыми с сишкой
Это эволюция-с...
А управление памятью в аде какое?
гц по желанию, но в бесплатной версии гната гц нету
Ты попадаешь в RAII
Сделай мне continue я eval-ю
Ты мне не мешай
Под "индусами" следует понимать не национальность, а людей с нарушениями логической системы, подавшихся в кодеры.
хотя как раз об этом часто упоминают в разных гайдлайнах
а вот постоянные end if для однострочных действий выбешивают капитально
Как и постоянные } для однострочных действий.
Ты так говоришь, как-будто тебя кто-то заставляет писать } для однострочных действий ;)
Читаемость, расширяемость.
Разве со скобками будет читаться лучше?
> расширяемость
О да, при добавлении еще одной строчки скобки будет дописывать так сложно, так долго, да еще и забаговать можно... Расширяемость она все-таки таится не в скобках, а в интерфейсах, которые функции/классы/модули/что-там-у-тебя представляют своим коллегам.
?
А промазать между не тех скобок - сложнее.
ide сдвинет эту строку на таб левее и ты заподозришь, что что-то тут не так...