Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Как же хорошо в языках с более строгой типизацией, где размер статического массива можно указать только константой, а выражения с переменными выплёвываются компилятором.
Мне кажется логичным, когда выражения, содержащие переменные, пригодны для объявления только динамических массивов. Керниган и Ритчи же почему-то посчитали это требование необязательным.
вот есть у тебя мк. Без кучи, просто адресное пространство флеш-памяти. Фрагментация недопустима - иначе мк не будет отрабатывать требуемые месяцы/годы бесперебойной службы. Итого два варианта: 1. складывать данные по фиксированным адресам; 2. выделять всю необходимую память сразу при запуске и дальше пользоваться только ей
> А сишного компилятора под него нету.
Мы всё-таки в 2017 году живём, когда 32-битный ARM с 4 кило оперативки и 32 кило флеша на борту стоит меньше бакса... И даже умножать умеет!
Не пора ли выбросить всё это восьмибитное говно, под которое на сях нельзя писать? 🙂
Я всецело за 32-битный прогресс и gcc для мк, но интересно, нет ли в
этих армах подвоха? Чувствительности к наводкам, срока службы, потребляемой мощности, может еще чего-то. Все-таки у 8-битных техпроцесс явно проще и "дорожки" шире.
> нет ли в этих армах подвоха
Да там разрыв не такой большой, на самом деле. Ну сделали этим cortex m0 регистры, АЛУ да шину пошире... Ну памяти побольше досыпали, раз техпроцесс позволяет. Архитектура там простая, набор инструкций от RISC'овых 8-биток не сильно отличается.
По потребляемой мощности некоторые M0 вполне конкурируют с 8-битками.
Срок службы от кристалла, имхо, почти не зависит. Разве что более тонкая флешка может подвести.
А вот наводки и помехи на 5-вольтовых мамонтов должны слабее влиять, да. Плюс у армов ноги не такие мощные, чаще придётся обмазывать транзисторами...
Ещё у ARM'ов порог вхождения выше чем у 8-биток (но есть и профит - эти знания пригодятся и на старших чипах).
Либо в кучу, либо делать массивы фиксированного размера. Просто вла - это мертворожденная абстракция. Ты не можешь позволить себе делать на стеке массивы произвольного размера. Если ты размещаешь на стеке массив, то знаешь, что он туда влезет, т.е его размер ограничен некоторой относительно небольшой константой. А если ты это знаешь, то почему не сделать обычный массив?
а бывают такие кейсы когда худший случай настает раз в год,и нет ничего стращного чот в этом случае все упадет
Больной кейс конечно, но всякое бывает.
Но я согласен что для обычного (не сверхмегабайтоёбского программирования под микроконтроллеры 1990го года выпуска) VLA и alloca нужны примерно никогда
VLA - единственный способ сделать правильный многомерный динамический массив. Идея в том, что указатель на непрерывный кусок памяти из маллока можно перекастовать в указатель на VLA.
поясните для студента с последнего ряда: почему нельзя кастануть в массив не указывая размерности? И чем неполно декларированный моссив отличается от VLA ?
Тут трюк в касте в многомерный VLA. Тогда задача вычисления индексов в одномерном куске памяти перекладывается на компилятор. Если размерность не указать, то откуда он вообще её узнает?
int (*array)[N] = calloc(N*M, sizeof(int));
for(int i = 0; i < M; i++)
for(int j = 0; j < N; j++)
array[i][j] = I*M+N;
vector[0]-то ладно, а вот vector[counter] может попасть куда-нибудь... скажем, в new_vector[0], ну это ладно, а если в k? Это ж смотря как компилятор переменные в стеке располагает...
Вот кстати. В реальной жизни у говнокоданов всё-таки что больше используется?
- changes were done in rev. xxx
- changes have been done in rev. xxx
?
У меня - первый вариант.
Present Perfect используется, когда ты говоришь о событии, которое началось в прошлом, но ещё не закончилось, либо оно имеет непосредственное отношение к тому, что происходит сейчас.
Если ты хочешь уточнить время, когда событие имело место, то Present Perfect уже не подходит, нужно использовать Past Simple.
Я бы сказал, что ревизию можно считать "временем", поэтому первый вариант (в пассивном залоге Past Simple) подходит больше.
С той поправкой, что "changes were done" звучит кривовато, я бы уточнил "The bug was fixed/introduced in rev XXX" или "This feature was introduced in rev XXX", etc.
Нет, в немецком другие правила. Perfekt чаще всего используется в устной речи, Präteritum в основном используется в письме (в книгах, журналах, etc.). Швейцарцы не используют Präteritum в принципе.
Т.е. немецкая фраза "Ich habe Klavier gespielt." отлично переводится как русское "Я играл на пианино." Может, только что, может, вчера, может, 10 лет назад и больше не играю, и т.д.
В английском это в зависимости от контекста может переводиться как "I played piano", "I've played piano", "I used to play piano (but now I don't)".
Обычно да, Perfekt в устной, Präteritum в письменной. Но если быть точнее, то Perfekt используется в коротких сообщениях, т. е. в самодостаточных предложениях, а Präteritum в связных текстах, когда предложение является лишь звеном цепочки повествования.
Сёма, ну грёбаный стыд, выучи уже структуру предложений, у тебя ни одного глагола во фразе нет.
Кому ты там вообще нужен, если ты даже простую фразу с гугл-транслейтом правильно написать не можешь?
Эсцет употребляется в исконно немецких словах. Удвоенное «s» иногда используют для передачи зарубежных названий, например, «Kalina krassnaja».
Иногда же ничего не удваивают. В этом случае либо помнят, из какого языка пришло слово и как оно в нём произносится (например, нужно помнить, что Sweatshirt пришло из английского и произносится примерно как [свитшо(р)т]), либо плюют на неаутентичность произношения .
"Since only two of our tape drives were in working order I was ordered to order more tape units in short order, in order to order the data several orders of magnitude faster
Какой интересный код - подключишь <vector>, а он сломается!
Починил.
сломал обратно
...
Индексация с единицы, хм, любопытно... могут быть неожиданные глюки в зависимости от расположения переменных в стеке.
...
>vector[counter]
>cin>>counter;
Ааааа!
Какие глюки? Просто vector[0] не будет использован. Будет лежать мёртвым грузом.
>>vector[counter]
>>cin>>counter;
Ага. Объявили два массива нулевой длины, а потом запросили длину. Жаль, что действие обратной силы не имеет.
Да вы оптимист, коллега.
Мне кажется логичным, когда выражения, содержащие переменные, пригодны для объявления только динамических массивов. Керниган и Ритчи же почему-то посчитали это требование необязательным.
Даже дураку слабому компилятору понятно, что размер массива - 15, хоть size и не помечен как constexpr.
> Керниган и Ритчи же почему-то посчитали это требование необязательным.
Легко говорить про плюсы на десктопе. Си на контроллерах - это другой мир, со своими законами и воззрениями
Потому и переменные нужно было в начале декларировать?
В кучу срать?
сразу char tsar_array[STACK_SIZE] ?;)
А сишного компилятора под него нету.
Только голый асм.
Мы всё-таки в 2017 году живём, когда 32-битный ARM с 4 кило оперативки и 32 кило флеша на борту стоит меньше бакса... И даже умножать умеет!
Не пора ли выбросить всё это восьмибитное говно, под которое на сях нельзя писать? 🙂
этих армах подвоха? Чувствительности к наводкам, срока службы, потребляемой мощности, может еще чего-то. Все-таки у 8-битных техпроцесс явно проще и "дорожки" шире.
Да там разрыв не такой большой, на самом деле. Ну сделали этим cortex m0 регистры, АЛУ да шину пошире... Ну памяти побольше досыпали, раз техпроцесс позволяет. Архитектура там простая, набор инструкций от RISC'овых 8-биток не сильно отличается.
По потребляемой мощности некоторые M0 вполне конкурируют с 8-битками.
Срок службы от кристалла, имхо, почти не зависит. Разве что более тонкая флешка может подвести.
А вот наводки и помехи на 5-вольтовых мамонтов должны слабее влиять, да. Плюс у армов ноги не такие мощные, чаще придётся обмазывать транзисторами...
Ещё у ARM'ов порог вхождения выше чем у 8-биток (но есть и профит - эти знания пригодятся и на старших чипах).
Ну спрячь их в функцию или класс, если они тебя так пугают. Видимость им всегда можно подрезать.
ну или я так могу поддержать рекурсию на 3 уровня, а так я уже на втором получу SO?
Байтоёбство же бывает
Больной кейс конечно, но всякое бывает.
Но я согласен что для обычного (не сверхмегабайтоёбского программирования под микроконтроллеры 1990го года выпуска) VLA и alloca нужны примерно никогда
> чот в этом случае все упадет
Так вот кто для фобос-грунт прошивку писал...
Ты так говоришь, будто это что-то плохое.
поясните для студента с последнего ряда: почему нельзя кастануть в массив не указывая размерности? И чем неполно декларированный моссив отличается от VLA ?
я понял
ключ слово -- "многомерный") Иначе сдвиги придется считать руками
Не заметил & в коде Steve_Brown.
хорошо что американцы его улучшили, и теперь можно говорить thru и lite
Или ещё в какой-нибудь главе есть подобный пассаж?
В этой же главе Фаулз писал, что придётся пожертвовать красотой и поэзией, не?
- changes were done in rev. xxx
- changes have been done in rev. xxx
?
У меня - первый вариант.
Если ты хочешь уточнить время, когда событие имело место, то Present Perfect уже не подходит, нужно использовать Past Simple.
Я бы сказал, что ревизию можно считать "временем", поэтому первый вариант (в пассивном залоге Past Simple) подходит больше.
С той поправкой, что "changes were done" звучит кривовато, я бы уточнил "The bug was fixed/introduced in rev XXX" или "This feature was introduced in rev XXX", etc.
Т.е. немецкая фраза "Ich habe Klavier gespielt." отлично переводится как русское "Я играл на пианино." Может, только что, может, вчера, может, 10 лет назад и больше не играю, и т.д.
В английском это в зависимости от контекста может переводиться как "I played piano", "I've played piano", "I used to play piano (but now I don't)".
Херня
> - changes have been done in rev. xxx
звучит как "извините, мы накосячили, это убьет мир и это неизбежно"
Либо changed in, либо <feature> has changed: <more>
Кстати, я сбился со счёта, сколько раз в жизни я видел сообщения со словами "entries finded", "bytes readed", "bytes writed", etc.
Мне больше нравится founded. Основательней звучит.
Может быть, у него в Граватаре указано странное возрастное ограничение?
P.S. Проверил, дело не в ограничении. И там, и там ГК запрашивает ограничение PG.
Граватару не понравилось size=28. Он не хочет генерировать такую мелкую превьюшку.
Хотя в комментах у нас тут самое настоящее NC-17.
Предлагаешь добавить возможность устанавливать возрастные оценки для комментариев?
https://ru.wikipedia.org/wiki/Система_классификации_фильмов_в_Казахстане
Что же такое может быть в фильме, что в 18 лет смотреть нельзя, а в 21 год можно?
Двадцатилетние студенты ржут
ba dum tss!
Das weiß ich leider nicht. Es funktioniert für mich. Ich werde versuchen, es zu ändern.
>Он изменился.
Кому ты там вообще нужен, если ты даже простую фразу с гугл-транслейтом правильно написать не можешь?
Что такое зёма?
Или "Сёма" Германии настолько не нужен, что там это имя ни пером описать, ни в метро крикнуть?
Иногда же ничего не удваивают. В этом случае либо помнят, из какого языка пришло слово и как оно в нём произносится (например, нужно помнить, что Sweatshirt пришло из английского и произносится примерно как [свитшо(р)т]), либо плюют на неаутентичность произношения .
Имя Семён происходит от древнееврейского имени שִׁמְעוֹן (Шимон) - "Он (Бог) услышал".
Немецкий аналог — Simon или Simeon. Уменьшительно-ласкательные варианты: Sim, Simi, Simmi, Simönchen, Simchen, Simche, Simke, Simme, Semme, Simmche, Simmele, Simmal, Simma, Simmerl.
Естественно, во всех этих вариантах первый звук звонкий ([з], а не [с]).
Hallo, ich heiße Linus Torvalds und ich spreche "Сёма" wie "Geh nach Python" aus.
На вопрос ответить нечем?
https://de.wiktionary.org/wiki/schießen
https://de.wiktionary.org/wiki/scheißen
Yes, English can be weird. It can be understood through tough thorough thought, though.
имхо, в компиляторы надо включать проверку орфографии