- 1
- 2
- 3
- 4
https://www.quora.com/As-a-software-engineer-in-your-opinion-what-are-the-biggest-bottlenecks-and-or-inefficiencies-in-programming-today
The key to overcoming this bottleneck, I believe, is live coding, whereby you can inspect and modify code and data while the program is running. Detect a bug? No problem. Immediately inspect the code and data to determine the cause. Make the appropriate changes. Continue execution. No need to save the code, compile the code and rerun the program from the beginning.
оказывается то, что делали пхпшники начала нулевых, правя по FTP в Notepad++ файлы на живом сервере это т.н. "Live coding", и за этим будущее
В поздние нулевые люди изобрели JSON и проблема стала нерешаема. Теперь вот сайты от фигурной скобочки распидорашивает
http://govnokod.ru/25358#comment457774
вообще не туда приклеился.
http://php.net/manual/en/function.array-key-first.php
array_key_last — Получает последний ключ массива
Раньше можно было только получить значение первого или последнего элемента функциями reset и end соответственно. Правда, очевидные названия?
Ну ещё для получения ключа первого элемента можно было использовать такую кобенацию:
С получением ключа последнего элемента (если массив разреженный) было хуже, потому что цикла в обратном направлении нет.
Длинные какие-то названия. То ли дело «begin()» и «end()»! Именно по этому я за «C++».
https://ideone.com/viiqHn
Обычно с её помощью -1 приводят к false.
http://govnokod.xyz/_25358/#comment-434913
и вывод классный
http://govnokod.xyz/_25358/#comment-434913
и вывод классный
Какой багор )))
Какой багор )))
А как это получилось?
А есть в «J» бесконечные списки?
Именно поэтому я за «itertools.count()».
UPD:
— Да, как и остальная функциушня в «Питоне», выглядит хуёво.
Интересно, (-@*:) сделает джва прохода по массиву или сунет эти операции в один цикл. К сожалению исходники плохо поддаются онализу:( Наверное первый вариант сокращается до i.3
ЗЫ. в сях есть аналог ' CMOVE> ( перемешает от наибольших адресов к наименьшим )?
Явно направление задать нельзя. А надо ли?
В S" Forth" ' CMOVE и ' CMOVE> с фиксированным направлением , а ' MOVE сам выбирает направление, никакого UB в этом случае. Именно поэтому я за S" Forth".
> А надо ли?
Ну, может быть заранее известно пересекаются ли буферы и как, например когда сдвигаешь массив.
В общем, действительно, положение неопределённое.
По этому поводу был забавный срач флешепидоров и libcщников, где-то в году 2013. libc копировало задом наперёд, потому пересекающиеся буфера работали нормально.
Однажды они memcpy оптимизировали, то ли штеуд быстрый rep mov завёз, то ли ещё по каким причинам стало удобнее копировать память вперёд. Но тут во флеш-шшш-шееее сломался звук.
По этому поводу даже Линус отписывался, мол почините, чтобы юзеры не страдали. На что libcшники говорят — нахуй нам это чинить, когда overlapped memcpy это UB?
И это правильно. Пользователи Адобе должны страдать.
Тем более, что чинилось это заменой в интерпретаторе «Флеша» вызова memcpy на вызов memmove. Так что библиотеку и вправду трогать не надо было.
Потому что кернеловцы НЕ ЛОМАЮТ ЮЗЕРСПЕЙС!!!
Mauro, SHUT THE FUCK UP!
It's a bug alright - in the kernel. How long have you been a
maintainer? And you *still* haven't learnt the first rule of kernel
maintenance?
If a change results in user programs breaking, it's a bug in the
kernel. We never EVER blame the user programs. How hard can this be to
understand?
[...]
> So, on a first glance, this doesn't sound like a regression
Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious
garbage and idiocy from a kernel maintainer again. Seriously.
[...]
WE DO NOT BREAK USERSPACE!
В случае MMIO или ещё каких-нибудь побочных эффектов направление может оказаться важным.
В MMIO области вообще страшно без volatile писать. А аргумент memcpy() не volatile.
З.Ы. На stm32f4 прикольно сделана mmio зона для usb. Она несколько килобайт, но оффсет внутри неё ни на что не влияет - твои данные тупо падают в очередь на отправку.
А насчёт зашкваривания памяти адресного пространства там и повеселее фишки есть. Например область адресного пространства, в которой ты видишь все биты оперативки как dword'ы.
Да, в других очередях (uart, spi) там надо в один регистр сувать по очереди.
> удобнее делать AND
Ну да, просто у ARM'ов нету операций над памятью в отличие от интела. Там только LD да ST к памяти обращаются. Поэтому такой костыль немного тактов экономит. Ну и неосиляторам битовой магии чуть легче живётся.