Pull to refresh
77
0
Send message

Rust: for и итераторы

Reading time6 min
Views15K
(предыдущая статья)

В данной статье мы обсудим for циклы, а так же родственные понятия итераторов и «итерируемых объектов».

В зависимости от вашего предыдущего опыта с другими языками программирования данные концепции могут показаться очень знакомыми в плане синтаксиса и семантики, или же совершенно новыми и непонятными. Наиболее близкие их аналоги можно найти в Питоне, но, думаю, программисты на Java, C# или же (современном) C++ так же увидят много пересечений с тем что есть в их языках.
Подробности
Total votes 45: ↑43 and ↓2+41
Comments8

Rust: & и ref в паттернах

Reading time5 min
Views10K
(продолжение)

Как вам, думаю, известно, Раст входит в число языков реализующих сопоставление с образцом (pattern matching). В случае если вам незнаком данный термин, вы можете думать о нём как об обобщёном switch выражении в котором мы сравниваем объекты не только по значению, но и по структуре:

match hashmap.get(&key) {
    Some(value) => do_something_with(value),
    None => { panic!("Oh noes!"); },
}

Разумеется сравнением дело не ограничивается. Как вы можете видеть в примере выше, объекты так же могут быть деструктурированы во время сопоставления (Some(value)) и их части присвоены другим переменным (value), которые могут быть далее использованы в соответствующей ветви match выражения.

Изящно, не правда ли? В Расте сопоставление с образцом это хлеб и масло не только для match, но и для for, (if) let и даже для обыкновенных аргументов функции.

Однако, долгое время я достаточно смутно представлял себе что происходит в случае когда мы добавляем к сопоставлению ссылки и заимствования. & и ref являются двумя «операторами» часто используемых при этом. Разнице между ними и будет посвящена данная статья.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments2

Пусковая петля или не стоит верить всему написанному в интернете

Reading time2 min
Views119K
Данная статья, возможно не тянет на полноценную статью, но тем не менее по ряду причин хотелось бы её опубликовать именно в таком виде, а не в виде комментария.

Итак, не разводя воды сразу к сути:

Прочитав статью "пусковая петля: запуск полезного груза на орбиту за 3$/кг" я обрадовался поднятой теме, но ссылка на статью на трендлабе насторожила (дальше будет понятно почему), ладно бы ссылка в P.S., автор благоразумно даёт только ссылку и не вытаскивает «факты» оттуда, в основном беря данные с сайта launchloop.com, но тем не менее частота упоминания в комментариях тренлабовской статьи и частота принятия её за авторитетный источник удручает. Причина в этом проста: я являюсь автором той статьи. Будь моя воля, то я бы написал об этом в комментариях к оригинальной статье, но статья по причине поездки была прочитана только вчера. Будучи автором статьи я могу утверждать одно: та статья никоим образом не является серьёзным техническим расчётом, многие цифры взяты с потолка, проведена лишь базовое согласование данных и расчётов; моей компетенции однозначно не хватает для корректного расчёта и конструирования подобных конструкций. Таким образом я хотел бы призвать аудиторию Хабра относиться к проверке фактов более внимательно и не принимать на веру всё что здесь пишут или на что ссылаются.
Немного подробностей
Total votes 153: ↑147 and ↓6+141
Comments40

Объектно-дезориентированный язык

Reading time4 min
Views44K

Каждый раз когда речь заходит о Go приходится слышать один и тот же вопрос:
Является ли Go объектно-ориентированным языком?

Честно говоря, меня это окончательно достало. Моя задача — расписать сию тему в данной статье, напечатать ссылку на визитках и раздавать их каждый раз когда фанаты ООП будут спрашивать у меня этот вопрос.
Читать дальше →
Total votes 79: ↑57 and ↓22+35
Comments43

Манифест свободного информационного пространства

Reading time5 min
Views19K

Данный текст ставит свой целью изложить позицию в вопросе копирайта и обмена информацией. Имеется надежда, что её возьмут на вооружение люди, которым она окажется близка, таким образом увеличив вероятность воплощения в жизнь описанных идеалов.

Манифест


Человек имеет право на:
  • обмен любой информацией
  • хранение и распространение любой информации
  • защиту каналов передачи информации

Ограничения данных прав возможны лишь в двух случаях:
  • добровольное взятие обязательств
  • по решению суда в качестве меры пресечения

Развёрнутое описания и пояснения
Total votes 49: ↑28 and ↓21+7
Comments36

Введение в теорию взаимодействующих последовательных процессов (CSP), часть 2

Reading time5 min
Views4.7K
Продолжаем цикл статей посвящённый алгебре исчисления процессов. Данный текст является переводом и сокращённым пересказом начальных глав книги Чарльза Э. Хоара. Теория применяется для формального описания работы параллельных систем. Примерам её практических применений являются такие языки программирования как Erlang, Go и Limbo.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments6

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

Reading time6 min
Views16K

Предисловие


Данный текст является переводом и сокращённым пересказом начальных глав книги Чарльза Э. Хоара. Целью является ознакомление русскоязычной аудитории с данной алгеброй исчисления процессов, коя нашла достаточно широкое применение в современной вычислительной науке в связи с большим распространением параллельных систем. Наиболее близкими и понятными практическими применениями CSP, думаю, будут являться следующие языки программирования:

CSP является формальным математическим языком, позволяющим описывать взаимодействие параллельных систем, основным его применением является формальная спецификация параллельной работы систем, например таких как Транспьютер, кроме того он применяется при разработке высоконадёжных площадок электронной торговли.
В данной статье будут рассказаны основы данной алгебры, без которой невозможно её дальнейшее изучение, в основном это базовое описание процесса, что покрывает первую половину первой главы книги.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments9

Information

Rating
Does not participate
Registered
Activity