Рубрики
Uncategorized

Почему вы должны выучить Zig

В мире много языков программирования, зачем создавать другое или более актуальное, зачем … Tagged with Zig, DevOps, Tooling, OpenSource.

В мире много языков программирования, зачем создавать другой или более актуальный, зачем узнать другое? Сегодня мы будем обсуждать язык программирования с именем Zig И почему я влюбился в это.

Давайте начнем с начала Zig предназначены для «исправления» многих проблем, с которыми сталкиваются другие языки программирования, хорошее видео для просмотра — это Дорога к Zig 1.0 Эндью Келли, который входит во многое придирание на других языках, таких как C, Rust, D и другие. Теперь не поймите меня неправильно, другие языки, с которыми Zig предназначен для соревнования, являются великими языками, они обеспечивают много технологий, однако, на мой взгляд, есть некоторые вещи, которые просто не подходят, и именно здесь появляется Зиг.

Одна вещь, которую предоставляет Zig — это характерный набор инструментов из коробки, и когда я говорю «Челемю», я имею в виду функциональный. Общий обзор языка Zig и инструментов можно увидеть Здесь , но мы собираемся сосредоточиться на нескольких конкретных моментах из этого, а также на это Сравнение с другими языками Надеемся, что лучше всего донести свою точку зрения.

Простой язык

Zig предназначен для того, чтобы быть «похожим» на C в том смысле, что он простой, сопровождающий (Эндрю Келли) стремится к тому, чтобы язык был и оставаться простым в любое время, не добавляя много дополнительных функций к языку, такому C ++, делает В то время как некоторые могут рассматривать это как недостаток, и по праву это также можно рассматривать как потенциал, поскольку это означает, что у вас есть меньше, чтобы учиться, и вы, скорее всего, приобретете хорошие правила большого пальца и традиций.

Производительность и безопасность

Zig’s Toolchain имеет 4 отдельных режима сборки: Отладка , LeleaseSafe , Выпуск и Выпуски Mall Анкет Каждый режим сборки включает и отключает определенные части процесса компиляции, включая, помимо прочего, оптимизацию, проверки безопасности времени выполнения, сжатие и многое другое. Простой обзор о том, что делает каждый режим, можно просмотреть Здесь Анкет Поскольку Zig выполняет ошибки строго, вы с меньшей вероятностью будете строить и запускать программы, которые имеют неопределенное поведение в них, поскольку Zig имеет 2 уровня проверки безопасности, как время выполнения, так и время компиляции.

  • D имеет функции @property, которые являются методами, которые вы называете тем, что выглядит как доступ к полевым полевым вопросам, поэтому в приведенном выше примере C.D может вызвать функцию.
  • C ++, D и Rust имеют перегрузку оператора, поэтому оператор+может вызвать функцию.
  • C ++, D, и Go Имейте исключения для броска/улова, чтобы foo () могло бы вызвать исключение и предотвратить вызов Bar (). (Конечно, даже в Zig Foo () может быть связан с тупиком и предотвратить призвание Bar (), но это может произойти на любом языке, полном Turing.)

Другой уровень безопасности, который имеет Zig, ограничивает некоторые вещи, например, не реализовывать Оператор перегрузка , предотвращение скрытого потока управления среди прочего, которые могут быть вызваны признаками как таковыми. Еще одна вещь, которую Циг фокусируется на предотвращении, это Скрытые распределения Анкет

Нет зависимости от компиляции LIBC и Cross

В то время как Zig может компилироваться против LIBC (MUSL, GLIBC и т. Д.), Это не зависит от этого. Это позволяет вам создавать двоичные файлы, которые работают на любой платформе. Кроме того, Zig также поставляется с несколькими версиями самого LIBC, так что, если по какой-либо причине вы хотите собрать против LIBC, вы можете перекрестно выполнять свою программу против Большое количество платформ Анкет Другие языки программирования, такие как ржавчина, имеют некоторую форму кросскомпиляции, но из того, что я видел, конечно, не до того же уровня, что и Zig, была сделана межкомпирация, была сделана Первый класс вариант использования В Zig и поддержка платформы все еще растет.

Использование библиотек C без привязки

Одна вещь, которую я нашел в Zig, это поддержка библиотеки C, и под этим я имею в виду Буквально не требуется FFI или привязки , Zig может напрямую использовать библиотеки C без необходимости обертка, привязки или FFI. В некоторых случаях это даже приводит к Код проще, чем сам код C показывая, что иногда Zig может быть лучше в использовании библиотек C, чем сам C. Эндрю Келли однажды сказал, что «Zig лучше использует библиотеки C, чем C использует библиотеки C». И после некоторого использования языка, я могу сказать, что согласен в некоторой степени.

Заключительные слова

Хотя я люблю Zig, это, безусловно, есть недостатки, как и на любом языке, в случае с Зигом это то, что это все еще довольно рано в разработке, и экосистема довольно микроскопична в великой схеме вещей, но одна вещь, которую я люблю, это то, что это это Язык не может расти, если он не используется, поэтому я призываю вас попробовать язык, возможно, сделать обертку, библиотеку или два или более! Язык нуждается в некоторой любви и внимании, это отличный проект с отличным обещанием, и хотя он является целью конкурируя с C может быть немного большим, особенно из -за того, что он есть в настоящее время, я говорю, что это может быть возможным в будущем, он обещает, у него есть возможность использовать библиотеки C, чтобы люди могли легко мигрировать, адский Zig может Даже действуйте как падение компилятора C и даже перевести код C на Zig (хотя очень очень грубо).

Так следует учиться Zig? Да. Я думаю, тебе следует.

Оригинал: «https://dev.to/hanna/why-you-should-learn-zig-329a»