В небольшом обзоре разберем достойные варианты отечественного и опенсорсного ПО разной направленности: операционные системы, САПР, IDE, антивирусы, редакторы графики и офисные программы.
Tiktok пользуется огромной популярностью, но люди часто публикуют в социальной сети приватную информацию, вроде номеров телефонов или банковских карт. Извлечь ее из открытых источников несложно, к тому же – совершенно легально.
Эксперты по Java из разных городов России поделятся опытом, рабочими кейсами и лучшими практиками в разработке.
— Читать дальше «Конференция Java Meeting Point»
…
Подборка технологий, инструментов, фреймворков и библиотек для создания утилит и интеграционных решений на Java/Scala.
— Читать дальше «Стек технологий, используемый в работе с Java Virtual Machine»
…
Расскажут про развитие языков программирования, машинное обучение с JavaScript, переход от REST API к GraphQL и многом другом.
— Читать дальше «Конференция RndTechConf 2020»
…
Более 200 докладов в 30 разных секциях. Всего 6 крупных направлений: разработка, диджитал, карьера и образование, тренды, менеджмент и IT и государство.
— Читать дальше «Конференция «Стачка-2020»»
…
На конференции специалисты из США, Европы, России и Украины поговорят про инструменты, фреймворки и практики для эффективного DevOps.
— Читать дальше «Конференция DevOps Fest 2020»
…
Обзор десяти инструментов Google для ИИ, которые могут использовать разработчики, компании и аналитики. Где искать качественные наборы данных и как привязать к проекту готовую модель TensorFlow.
А вы знали о существовании языка программирования V? Это простой компилируемый язык для разработки быстрого и легковесного софта. И главное, что он продолжает активно развиваться.
Несмотря
на свою простоту, язык V может использоваться
практически во всех областях разработки: системное программирование, веб, разработка игр, GUI, мобильные приложения и научные исследования.
V представляет собой компилируемый в машинный код язык со статической типизацией, сосредоточенный на решении задач по упрощению сопровождения разработки и обеспечению максимальной высокой скорости компиляции. Код компилятора, библиотек и сопутствующих инструментов открыт под лицензией MIT.
В этой публикации мы рассмотрим основные характеристики языка, примеры кода и как установить средства работы с языком на вашей операционной системе.
Основные
характеристики
Вот как характеризуют язык автор проекта и те, кто им успели воспользоваться:
Простота: при знакомстве с другими языками, изучить V можно выучить менее, чем за час
Быстрая компиляция: от 100 тыс. до 1,2 млн строк кода в секунду на одном ядре CPU (данные приведены для Intel i5-7500 @ 3.40GHz, SM0256L SSD, без оптимизации). Самосборка компилятора: от 0.15 – 0.6 с
Безопасность: нет null и globals, никакого неопределенного поведения, иммутабельный по умолчанию
Нет сборщика мусора или подсчета ссылок. Очистка происходит во время компиляции. Если V-программа компилируется, в ней нет утечек памяти.
Язык имеет модульную структуру, есть менеджер пакетов vpm. Установка пакетов выглядит так: v install sqlite
Чтобы вызвать функцию foo() в новом потоке, достаточно написать go foo()
Александр Медведников начал работу над языком для решения собственных задач, и постоянно его совершенствует. В проекте сейчас 200 контрибьюторов, код распространяется по лицензии MIT.
Временная лента автора на GitHub
Примеры кода
Не будем далеко ходить, посмотрим сразу на примеры кода. Протестировать их и примеры из документации можно, не устанавливая V – на онлайн-площадке Playground.
Расширенный “Hello world”
fn main() {
areas := ['game', 'web', 'tools', 'science', 'systems', 'GUI', 'mobile']
for area in areas {
println('Hello, $area developers!')
}
}
Hello, game developers!
Hello, web developers!
Hello, tools developers!
Hello, science developers!
Hello, systems developers!
Hello, GUI developers!
Hello, mobile developers!
Числа Фибоначчи
fn fib(n int) int {
if n <= 1 {
return n
}
return fib(n - 1) + fib(n - 2)
}
fn main() {
for i := 0; i < 10; i++ {
println(fib(i))
}
}
0
1
1
2
3
5
8
13
21
34
Числа Фибоначчи + мемоизация
const (
MAX = 15
)
struct Fib {
nums []int
}
fn (fib mut Fib) calc(n int) int {
if n <= 1 {
return n
}
if fib.nums[n] != 0 {
return fib.nums[n]
}
fib.nums[n] = fib.calc(n - 1) + fib.calc(n - 2)
return fib.nums[n]
}
fn main() {
mut fib := Fib {
nums: [0].repeat(MAX)
}
for i := 0; i < MAX; i++ {
println(fib.calc(i))
}
}
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
JSON кодирование/декодирование
import json
struct User {
name string
age int
mut:
is_registered bool
}
fn main() {
s := '[{ "name":"Frodo", "age":25}, {"name":"Bobby", "age":10}]'
mut users := json.decode( []User, s) or {
eprintln('Failed to parse json')
return
}
for user in users {
println('$user.name: $user.age')
}
println('')
for i, user in users {
println('$i) $user.name')
if !user.can_register() {
println('Cannot register $user.name, they are too young')
continue
}
users[i].register() // `user` is immutable, we have to modify the array
}
// Let's encode users again just for fun
println('')
println(json.encode(users))
}
fn (u User) can_register() bool {
return u.age >= 16
}
fn (u mut User) register() {
u.is_registered = true
}
Перегрузка операторов
struct Vec {
x int
y int
}
pub fn (a Vec) str() string {
return '{$a.x, $a.y}'
}
fn (a Vec) + (b Vec) Vec {
return Vec {
a.x + b.x,
a.y + b.y
}
}
fn (a Vec) - (b Vec) Vec {
return Vec {
a.x - b.x,
a.y - b.y
}
}
fn main() {
a := Vec{2, 3}
b := Vec{4, 5}
println(a + b)
println(a - b)
}
{6, 8}
{-2, -2}
Обновленная копия struct
struct User {
name string
age int
}
fn main() {
user1 := User{'Bob', 20}
user2 := { user1 | name: 'Peter' }
println(user1.name)
println(user1.age)
println(user2.name)
println(user2.age)
}
Bob
20
Peter
20
Установка
V
Средства работы с языком можно установить из сборок (Linux, macOS, Windows) или из исходников, клонировав репозиторий с GitHub:
git clone https://github.com/vlang/v
cd v
make
Это уже полностью готовый V, который доступен по адресу [путь к V repo]/v. На
Windows следует через командную строку использовать make.bat.
Язык постоянно обновляется. Чтобы сделать апдейт, используем простую команду:
v up
Компилятор C. Для работы с языком V вам также понадобится C-компилятор – можно использовать такие средства, как Clang, GCC или Visual Studio. Если у вас нет компилятора, воспользуйтесь инструкциями для своей платформы.
macOS: Установите XCode из App Store или запустите xcode-select --install для установки инструментов XCode.
Debian/Ubuntu: в терминалеsudo apt install build-essential
На Windows можно использовать MinGW-w64, Visual Studio или llvm-mingw.
Visual Studio занимает гораздо больше места, но если вы планируете использовать UI-библиотеку, эта среда предпочтительнее. Язык V использует функции Windows: поддержка вывода цвета в консоли, IPv6, TLS на сокетах и др.
Симлинк. Можно создать символьную ссылку /usr/local/bin/v, чтобы V был доступен глобально: sudo ./v symlink
Docker. Средства языка также доступны в виде образа Docker:
git clone https://github.com/vlang/v
cd v
docker build -t vlang .
docker run --rm -it vlang:latest
Docker на Alpine/musl:
git clone https://github.com/vlang/v
cd v
docker build -t vlang --file=Dockerfile.alpine .
docker run --rm -it vlang:latest
/usr/local/v/v
Тестируем!
Убедимся, что V может сам себя скомпилировать:
v -o v2 cmd/v
$ v
V 0.1.x
Use Ctrl-C or `exit` to exit
>>> println('hello world')
hello world
>>>
Проверим, что работают примеры:
cd examples
v hello_world.v && ./hello_world # или проще
v run hello_world.v # так можно собрать и запустить код
v word_counter.v && ./word_counter cinderella.txt
v run news_fetcher.v
v run tetris/tetris.v
Чтобы с помощью графического модуля создать тетрис или что-то подобное, вам также потребуются библиотеки glfw и freetype.
Если вы планируете использовать пакет http, то на системах, отличных от Windows, необходимо установить OpenSSL:
V UI – это кроссплатформенный инструментарий, написанный на V для Windows, macOS, Linux (скоро будет для Android, iOS и JS/WASM). Графический интерфейс V использует нативные виджеты на Windows и macOS, а на других платформах они написаны сразу на V.
cd examples
v run users.v
v run temperature.v
v run ...
Библиотеке
предстоит еще долгий процесс роста, многие функции пока отсутствуют.
Бинарники, созданные с помощью V UI, не имеют зависимостей. Для того чтобы начать разработку V UI-приложений необходимо установить V, glfw и freetype (glfw скоро будет изъята из списка необходимых).
Язык программирования V является интересной альтернативой популярным языкам с компиляцией кода быстрее, чем в C++. По сравнению с Go, в V поддерживается только один вид
присваиваний, отсутствует null и глобальные переменные. Если вам интересно сопоставить V с этими и другими языками, просмотрите эту страницу.
Важно, что язык развивается и не стоит на месте. В скором будущем можно
ожидать расширения функциональности и исправления мелких недочетов.
Несколько примеров использования нового инструмента от продакт-менеджера GitHub Билли Грифина. Консольная утилита пока на стадии беты, но уже кое-что может.
Из статьи вы узнаете, как избавиться от страха отправки первого pull request в чужой репозиторий и внести свой вклад в программное обеспечение с открытым исходным кодом.
Из этой статьи вы узнаете, как избавиться от страха отправки первого pull request в чужой репозиторий и внести свой вклад в программное обеспечение с открытым исходным кодом.
Разработчик Cortex Калеб Кайзер делится соображениями о преимуществах применения Go для инфраструктурных решений в ML-проектах и о том, как два языка могут дополнять друг друга.
Мероприятие соберёт ведущих специалистов по разработке СПО, участвующих в крупных международных и отечественных проектах.
— Читать дальше «XVI научно-практическая конференция разработчиков свободных программ»
…
Amazon запустила проект Corretto — кроссплатформенный дистрибутив OpenJDK с долгосрочной поддержкой. Сейчас доступна тестовая версия продукта, полноценный релиз планируется в первом квартале 2019 года. Платформы и совместимость Предварительная версия C…
Apache Software Foundation показала первый релиз интегрированной среды разработки NetBeans после передачи кода компанией Oracle. Версия под номером 9.0 проходит сертификацию и отладку в инкубаторе фонда, чтобы затем стать самостоятельным прое…
На прошедшей конференции F8 Oculus, которой владеет Facebook, представила обновленную и переработанную версию React VR — JS-библиотеки с открытым кодом для создания кроссплатформенных приложений в виртуальной реальности. Фреймворк, который теперь назыв…
Google опубликовала версию 1.0 собственного open source формата сжатия изображений WebP. Он был впервые предложен еще в 2010 году. Данный формат использует алгоритмы сжатия с потерями качества и без и показывает лучшие результаты по сравнению с JPEG и …
Смена имени проекта произошла из-за отказа Oracle передать Eclipse Foundation разрешение на использование торговой марки Java.
— Читать дальше «Eclipse Foundation переименовала Java EE в Jakarta EE»
…
Новая разработка компании предназначена для комфортной работы с видео- и аудиорядами любой частоты.
— Читать дальше «Facebook предложила измерять время во flick`ах»
…
В проект включены функции, хорошо зарекомендовавшие себя и используемые в таких проектах Google, как gRPC, Protobuf и TensorFlow.
— Читать дальше «Google представила Abseil, дополнение к стандартной библиотеке C++»
…
Свежие комментарии