The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз языка программирования Go 1.10, opennews (??), 18-Фев-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


91. "Релиз языка программирования Go 1.10"  –6 +/
Сообщение от Аноним (-), 19-Фев-18, 01:19 
я как узнал, что в го нет дженериков, так тут же понял, что язык игрушечный. Без дженериков добро пожаловать обратно в дельфи, где если надо создать список чего-то, то надо возводить для этого отдельный класс списка: TStringList, TIntList etc. В норм языках все проще: List<String>, List<Integer>... И не нужно дублировать функционал.

зы Ща нагуглил delphi generics, и обнаружил, что с 2009 они уже есть. А я работал с Borland Delphi 2005 (там на диске еще древнегреческая голова статуи какая-то). Ну молодцы, чо. Значит го хуже, чем даже дельфи 2009.

Ответить | Правка | Наверх | Cообщить модератору

96. "Релиз языка программирования Go 1.10"  +2 +/
Сообщение от Рррр (?), 19-Фев-18, 04:41 
Почитал в комментариях, наткнулся на слова "защита от дурака и художника", все встало на свои места. Просто есть люди, которые не могут без джкнериков физ-баз написать.
Ответить | Правка | Наверх | Cообщить модератору

149. "Релиз языка программирования Go 1.10"  +1 +/
Сообщение от _ (??), 21-Фев-18, 00:01 
>"защита от дурака и художника"

Тля! Это великолепно! Одной фразой - всю суть! :-)
Дай URL если найдёшь.

Ответить | Правка | Наверх | Cообщить модератору

107. "Релиз языка программирования Go 1.10"  +/
Сообщение от Анончик (?), 19-Фев-18, 12:35 
>Без дженериков добро пожаловать обратно в дельфи

Только вот в делфи они есть вообще-то, и самым серьезным недостатком для меня остается секция var.

Ответить | Правка | К родителю #91 | Наверх | Cообщить модератору

121. "Релиз языка программирования Go 1.10"  +/
Сообщение от Аноним (-), 19-Фев-18, 16:57 
> Только вот в делфи они есть вообще-то

коммент до конца не читай
@
сразу отвечай

Ответить | Правка | Наверх | Cообщить модератору

108. "Релиз языка программирования Go 1.10"  –1 +/
Сообщение от Аноним (-), 19-Фев-18, 12:49 
В Go такие вещи делаются с помощью интерфейсов. Идеология языка подразумеват отсутствие дублирования возможностей, значит раз без дженериков можно обойтись — они не нужны.
Ответить | Правка | К родителю #91 | Наверх | Cообщить модератору
Часть нити удалена модератором

122. "Релиз языка программирования Go 1.10"  +2 +/
Сообщение от Аноним (-), 19-Фев-18, 17:59 
> и какой же там интерфейс списка?

Интерфейс списка? Ты о чём? Есть тип списка в стандартной библиотеке: https://golang.org/pkg/container/list/

> принимает какой-нибудь самый базовый класс Object в своем методе add?

Сядь поплотнее в кресло, сделай глубокий вдох, приготовься к взрыву мозга: в go не тклассов. А так — принимает interface{}.

Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

124. "Релиз языка программирования Go 1.10"  +/
Сообщение от Аноним (-), 19-Фев-18, 18:19 
>  go не тклассов

Ну нормас так. Что, ФП головного мозга? Обратно в 70-ые?

> А так — принимает interface{}.

Потыкал запускалку примеров по твоей ссылке и сразу обнаружил, что вам приходится явно возводить .(string), чтобы привести значение элемента списка к строке. Я ж грю - ничем не отличается от void* в глибе.

--------------------

    package main
    
    import (
      "container/list"
      "fmt"
    )
    import "strings"
    
    func main() {
      // Create a new list and put some numbers in it.
      l := list.New()
      e4 := l.PushBack("Four")
      e1 := l.PushFront("One")
      l.InsertBefore("Foo", e4)
      l.InsertAfter("Bar", e1)
      l.InsertAfter("Baz", e1)
    
      // Iterate through list and print its contents.
      for e := l.Front(); e != nil; e = e.Next() {
    
        // Хаха :-)
        //
        // fmt.Println(strings.ToUpper(e.Value))
        //
        // prog.go:20:32: cannot use e.Value (type interface {}) as type string in argument to strings.ToUpper: need type assertion
    
        // А вот с явным приведением типа работает. Го-программерам без дженериков приходится явно указывать типы там, где в норм языках они указываются на основе дженериков
        fmt.Println(strings.ToUpper(e.Value.(string)))
      }
    }

Ответить | Правка | Наверх | Cообщить модератору

125. "Релиз языка программирования Go 1.10"  +1 +/
Сообщение от Аноним (-), 19-Фев-18, 18:35 
>>  go не тклассов
>Ну нормас так. Что, ФП головного мозга? Обратно в 70-ые?

Что, не можешь представить ООП без классов? А оно бывает.

> Го-программерам без дженериков приходится явно указывать типы там, где в норм языках они указываются на основе дженериков

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

Ответить | Правка | Наверх | Cообщить модератору

127. "Релиз языка программирования Go 1.10"  +/
Сообщение от анон (?), 19-Фев-18, 20:30 
Не распинайся. Высказывания ниже за авторством Роба Пайка. По-моему он просто тролль.

For example, I've been examining generics recently, but I don't have in my mind a clear picture of the detailed, concrete problems that Go users need generics to solve. As a result, I can't answer a design question like whether to support generic methods, which is to say methods that are parameterized separately from the receiver. If we had a large set of real-world use cases, we could begin to answer a question like this by examining the significant ones.

I was asked a few weeks ago, "What was the biggest surprise you encountered rolling out Go?" I knew the answer instantly: Although we expected C++ programmers to see Go as an alternative, instead most Go programmers come from languages like Python and Ruby. Very few come from C++.

И правда, почему C++ программеры не любят Go?
Наверное, потому что привыкли к STL, к параметрическому полиморфизму.
Наверное, конструкция вида
var mySet map[someKeyType]bool
как замена для множества выглядит оверкиллом. (Го-программер не увидит ничего плохого в том, что )
Кому нужно что-то еще кроме хеш-мапы и массива/слайса? Тем, кому нужно, вон, запилят такие вот свои контейнеры, как указанный лист из их стандартной библиотеки. Да, анон, суперкрутой range не для твоих контейнеров. И касты, больше кастов богу кастов! Больше крови из глаз! На самом деле, ты очень быстро привыкнешь выгонять данные фором в массив, потом, например, сортировать его перед выдачей, вместо того, чтобы заюзать мапу на разновидности бинарного дерева поиска. Тебе больше не нужно знать структуры данных, проблема выбора снята. Оставь свои терзания, начни писать свой код. Пусть он снимается с твоего мозга как энцефалограмма. Пиши его, пиши его больше, не думай, повторяй одно и то же again and again, херачь утиные интерфейса, разноси методы по всем модулям трансляции! Во славу гугла! Во славу анти ^W Роба Пайка.

Ответить | Правка | К родителю #124 | Наверх | Cообщить модератору

134. "Релиз языка программирования Go 1.10"  +/
Сообщение от Аноним (-), 19-Фев-18, 23:18 
> И правда, почему C++ программеры не любят Go?
> Наверное, потому что привыкли к STL, к параметрическому полиморфизму.

Да. И ещё ко многим другим извращениям.

> Кому нужно что-то еще кроме хеш-мапы и массива/слайса? Тем, кому нужно, вон, запилят такие вот свои контейнеры, как указанный лист из их стандартной библиотеки. Да, анон, суперкрутой range не для твоих контейнеров.

Кому оно действительно нужно в больших количествах (и они могут это обосновать), очевидно, go не подходит. Но мапы и слайсы покрывают никак не меньше 90% реальных задач.

Ответить | Правка | Наверх | Cообщить модератору

136. "Релиз языка программирования Go 1.10"  +1 +/
Сообщение от angra (ok), 20-Фев-18, 01:05 
> Да. И ещё ко многим другим извращениям.

Ну что поделать, люди разные, одни программисты способны слегка менять способ мышления, когда переходят к другому языку программирования, а другие на любом языке будут пытаться писать код на С++(Fortran/C/PHP/Perl/bash/любой_другой_ЯП). Поэтому первым стоит изучать как можно больше разных ЯП и подбирать язык под задачу, а вторым сосредоточиться на своем любимом и подбирать задачи под язык. Каждому своё, главное не перепутать.

Ответить | Правка | Наверх | Cообщить модератору

141. "Релиз языка программирования Go 1.10"  +1 +/
Сообщение от Аноним (-), 20-Фев-18, 06:37 
>Поэтому первым стоит изучать как можно больше разных ЯП и подбирать язык под задачу

Этой мантре уже 100 лет в обед, но на практике она не работает.

Ответить | Правка | Наверх | Cообщить модератору

150. "Релиз языка программирования Go 1.10"  +/
Сообщение от _ (??), 21-Фев-18, 00:05 
>И правда, почему C++ программеры не любят Go?

Потому что И правда, почему C++ программеры не любят _всё_ , кроме С++!
Не благодари :)

Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

151. "Релиз языка программирования Go 1.10"  +/
Сообщение от _ (??), 21-Фев-18, 00:06 
>И правда, почему C++ программеры не любят Go?

Потому что C++ программеры не любят _всё_ , кроме С++!
Не благодари :)

Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру