LINUX.ORG.RU

Новый язык V

 , , , ,


1

6

Что сообщество думает по поводу сегодняшнего релиза нового компилируемого языка с авто транслейтом Си в V
https://github.com/vlang/v
? Конкурент Rust?

★★★★★

Последнее исправление: menangen (всего исправлений: 1)

Ответ на: комментарий от RazrFalcon

Какие фантазии? Что мозилла занималась разработкой этого языка?

То есть никогда не занималась?

grem ★★★★★
()
Ответ на: комментарий от RazrFalcon

Они разрабатывали его под свои хотелки. У них не так много денег (они сами чужие получают), чтобы ими разбрасываться из соображений «посмотрим, что получится!».

grem ★★★★★
()
Ответ на: комментарий от grem

... (они сами чужие получают)

И не малые.
Так что можно свободно «пилить» еще лет сорок.

Владимир

anonymous
()
Ответ на: комментарий от grem

Если вы осилите прочесть хотя бы первые пару предложений по ссылке, то узнаете, что первые 3-и года rust пила не мозила.

RazrFalcon ★★★★★
()
Ответ на: комментарий от grem

Насколько помню все кричали, что ржавый создавался специально для написания революционного браузера на замену мозилы. Но читая историю его разработки понимаешь, что там варили кашу из топора, изначально это просто было непонятное поделие.

Поэтому непонятно кому верить, но имидж ЯП создан как для написания браузера, было такое, точно помню.

foror ★★★★★
()
Ответ на: комментарий от anonymous

Если что речь шла об мозиле.

Владимир

anonymous
()
Ответ на: комментарий от RazrFalcon

Mail.ru переписывается на go! Почему уродец? Дело свое делает же.

Deleted
()
Ответ на: комментарий от RazrFalcon

Факт в том,что 3 года спустя они очень активно включились в этот процесс, с тех пор прошло 10 лет

grem ★★★★★
()
Ответ на: комментарий от RazrFalcon

А вот у гугла их хотя лопатой греби, но в итоге получился уродец в виде Go.

Почему уродец? На мой субъективный взгляд, Go красивый язык. Особенно подкупает чистота синтаксиса, минимум неочевидных закорючек.

package main

import (
    "fmt"
    "strings"

    "github.com/elliotchance/pie/pie"
)

func main() {
    name := pie.Strings{"Bob", "Sally", "John", "Jane"}.
        FilterNot(func (name string) bool {
            return strings.HasPrefix(name, "J")
        }).
        Map(strings.ToUpper).
        Last()

    fmt.Println(name) // "SALLY"
}
hbee ★★★★
()
Ответ на: комментарий от hbee

На мой субъективный взгляд

А на мой субъективный взгляд - говно. И кроме синтаксиса там ещё полно проблем.

RazrFalcon ★★★★★
()
Ответ на: комментарий от anonymous

Язык - это средство передачи информации. Между людьми.

Во первых, языки програмирования это ещё и средство описания вычислений. Во вторых, как из этого следует, что это область гуманитарная? Языки уже давно стали той областью, где царит математика.

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

Nexmean
()
Ответ на: комментарий от RazrFalcon

А для чего? Вот C сразу создавали прежде всего для написания ОС; с FORTRAN тоже всё ясно; Erlang разрабатывался под определённые цели; даже Python первоначально создавался для определённой ОС.

И только Rust начали непонятно зачем делать?

grem ★★★★★
()
Ответ на: комментарий от Partisan

Go спроектирован так, чтобы быть полезным для отдельных задач.

Go спроектирован дедом, как дед привык, как знал и умел. А дед этот знал мало, ибо с PLT последний раз соприкосался ещё в университете.

Популярность Go показывает, что цель его создания достигнута - он нужен некоторым (и даже многим).

Популярность Go показывает авторитет гугла, а так же его маркетинговый потенциал, не более.

В примере языка V я не понял, какую цель преследовал его автор, и подозреваю, что никакой.

Автор V, очевидно, о PLT знает ещё меньше чем вышеупомянутый дед, но при этом он таки успел повидать языки новее тех, что были созданны в 80-х.

Nexmean
()
Ответ на: комментарий от hbee
func (name string) bool {
    return strings.HasPrefix(name, "J")
}

чистота синтаксиса

Почему для объявления лямбды нужно ключевое слово? Зачем указывать типы параметров и возвращаемых значений, когда это и так понятно? Зачем return? Зачем скобки с запятыми? Где тут чистота синтаксиса?

\name -> Strings.hasPrefix name "J"

Вот здесь видно чистоту синтаксиса, в вашем примере не видно.

Nexmean
()
Ответ на: комментарий от Nexmean

\name -> Strings.hasPrefix name «J»

Ну, этот код совсем из другой традиции. Go принадлежит к C-подобным языкам.

Что касается лямбды, то зачем придумывать особенный синтаксис для неё, когда уже есть функция. Здравый смысл.

hbee ★★★★
()
Ответ на: комментарий от hbee

Что касается лямбды, то зачем придумывать особенный синтаксис для неё, когда уже есть функция

Как минимум для того, чтобы было чуть менее весело описывать каррирование.

(function(x) {
  return function(y) {
    return x + y
  }
}); // против этого:

(x => y => x + y)

Разумеется, с таким примитивным примером наличие отдельного синтаксиса под лямбды не будет смотреться так выгодно, как мне бы хотелось, но всё же. Не стоит также забывать про функции высшего порядка, частичное применение, и прочая, и прочая из номинально мира функционального программирования.

Заранее прошу прощения за JS.

Deleted
()
Ответ на: комментарий от t184256

Ну ещё в деструктуризацию, rest/spread и весёлый аналог do-нотации из хаскеля.

Deleted
()
Ответ на: комментарий от Nexmean

Не кукарекай. $man «Mathematical Methods in Linguistics» by B.H. Partee and R.E. Wall. Один из авторов, кстати, в МГУ и ВШЭ курсы по формальной и лексической семантике вела.

anonymous
()
Ответ на: комментарий от Nexmean

Популярность Go показывает авторитет гугла, а так же его маркетинговый потенциал, не более.

Нихрена она не показывает. Популярность Go исходит не столько из самого ЯП, сколько из поддержки кросскомпиляции под основные платформы и большой стандартной библиотеки, предоставляющей примитивы для разработки под web. Объективно лучший Swift не мог ни того, ни другого и под web не взлетел.

anonymous
()
Ответ на: комментарий от Partisan

хреновому языку Nemerle

Да ладно вполне годный язык был в отличии от сабжа. Вот сами разработчики языка да плохо себя вели, срачи помню были эпические.

anonymous
()
Ответ на: комментарий от example_cat

тут на лоре чел про графическое программирование толкает тему, вот это интересно

Графическое программирование уже лет наверно 40 пытается родится и никак ни получается. А то что тут на соседней теме вообще ниже плинтуса.

anonymous
()
Ответ на: комментарий от anonymous

Нет. Язык - это средство передачи информации. Между людьми. В том числе язык программирования.

С языком программирования сложнее это далеко не просто средство передачи информации и не только между людьми. Это средство формализации задачи таким образом что может быть напрямую исполнено компьютером и одновременно быть понятным другим людям.

anonymous
()
Ответ на: комментарий от Deleted

Не стоит также забывать про функции высшего порядка, частичное применение, и прочая, и прочая из номинально мира функционального программирования.

Так Go не функциональный язык, просто благодаря функциям-объектам можно использовать элементы соответствующего стиля. Каррирования в Go точно не будет в обозримом будущем.

Вообще, поработав на Go несколько месяцев, я понял, что это совершенный и законченный язык, насколько это вообще возможно. Добавлять в него ничего не надо, я бы даже выкинул кое-что (навскидку — функцию new, ветку else в if, кастование string(int)).

Тревожит, что собрались добавлять встроенную функцию try — сахар для обработки ошибок (можно почитать в golang-блоге). Это означает — увеличивают количество способов сделать одно и то же. Скользкая дорожка C++, мать его. Одна надежда, что ещё несколько лет успею поработать на Go с удовольствием :).

hbee ★★★★
()
Ответ на: комментарий от foror

Можно и на Си реализовать DOM и WHATWG стандарты, вплоть до эмуляции ООП, но выглядеть это будет убого и тупо. На расте, кстати, оно так и выглядит.

На расте есть алгебраический тип данных (тип enum) на него DOM образное ложится гораздо лучше чем на классический ООП.

anonymous
()
Ответ на: комментарий от anonymous

Популярность Go исходит не столько из самого ЯП, сколько из поддержки кросскомпиляции под основные платформы и большой стандартной библиотеки, предоставляющей примитивы для разработки под web.

Это лишь часть истины; да, Go весьма практичен и способствует ускорению разработки и улучшению качества продукта. Но в нарастании популярности немалую роль играет и эстетика языка: значительная доля разработчиков ценит процесс выше результата :).

hbee ★★★★
()
Ответ на: комментарий от Nexmean

При этом мейнстримные языки программирования созданы не гуманитариями, а инженерами,

Ну perl гуманитарием создан :)

anonymous
()
Ответ на: комментарий от hbee

Скорее всего на любом языке можно написать «не эстетичный» код.

Владимир

anonymous
()
Ответ на: комментарий от hbee

я бы даже выкинул ... ветку else в if

Серьезно?

anonymous
()
Ответ на: комментарий от anonymous

Предвосхищая вопрос «нахрена»: ценится меньшая вложенность кода.

anonymous
()
Ответ на: комментарий от anonymous

Даже для ассемблеров это неверно.

Если углубляться то в результате дойдем до электрических импульсов.

anonymous
()
Ответ на: комментарий от anonymous

И как без нее?

Switch:

switch i {
  case 1:
    fmt.Println("one")
  case 2:
    fmt.Println("two")
  case 3:
    fmt.Println("three")
}
hbee ★★★★
()
Ответ на: комментарий от RazrFalcon

Как этому помогает унылая типизация и гонки данных.

Не знаю, что за «гонки данных» (может быть, имеется в виду передача в канал указателя, что только идиот будет делать). Дело даже не в типизации, вон C++ тоже типизированный язык, что ему мало помогает... Первейшая добродетель программы после корректности — читаемость. И здесь Go нет равных. Читать любой хороший код на Go, в том числе код стандартной библиотеки — праздник после инфернальных зарослей в глубинах libstdc++ и boost :).

hbee ★★★★
()
Ответ на: комментарий от hbee

Не знаю, что за «гонки данных»

Про флажок «race» в «go test» слышал? Они хотят в Go 2 засунуть его прямо в компилятор. Но в Go 1 - это твоя головная боль.

anonymous
()
Ответ на: комментарий от anonymous

Про флажок «race» в «go test» слышал?

Race detector? Не только в test, кстати. Ну и что, полезнейший тул отлавливать бяку. Если блюсти мудрость «don't communicate by sharing memory, share memory by communicating», то есть пользоваться исключительно каналами, всё будет чики-пуки.

hbee ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.