LINUX.ORG.RU

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

По-теме то есть что сказать? За тебя вон товарищ учёный отдувается. Правда он там слился. Ты правда тоже, но втихую.

no-such-file ★★★★★
()
Ответ на: комментарий от skiminok1986

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

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

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

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

Ах да в питоне, скорее всего, не знают про паттерны…

Откуда дровишки?

Из раздутого у жабистов до невозможности чувства превосходства на другими.

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

поэтому я в плюсах иногда комментирую закрывающие скобки

А VB.NET сам комментирует хотя бы частично:

End If
End Select
End While
End With
Loop
Next

https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/control-flow/nested-control-structures

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от sanyo1234

Выглядит довольно бессмысленно. Нужны содержательные комменты, вроде «конец цикла по частицам» а не вот это вот…

AntonI ★★★★
()
Ответ на: комментарий от no-such-file

Вот взять хотя бы вас, на пару с @emorozov. Даже ники вы себе выбрали максимально тупо и прямолинейно: имя фамилия. Звание ещё забыли добавить, по штатному расписанию. У вас же есть звание, товарищ?

Ух, прям с козырей зашёл.

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

Ты не увидишь знакомых по Джаве «паттернов» в коде многих современных ЯП хотя бы потому, что в Джаве эти самые паттерны появились не от хорошей жизни.

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

какой толк от этой частичности если у вас несколько одинаковых End’ов подряд например?

Все же они обычно идут вперемешку еще с чем-то.

Типа такого:

        End With
      End If
    End If
  End Select
End While

И это намного проще читается через любое количество десятков лет, чем подобное:

        }
      }
    }
  }
}

Мало того, IDE VB.NET обычно сама добавляет правильное ключевое слово для закрытия только что открытого блока и контролирует их соответствие друг другу, поэтому образно пересортица обнаруживается намного проще и раньше.

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

Выглядит довольно бессмысленно. Нужны содержательные комменты, вроде «конец цикла по частицам» а не вот это вот…

В одном методе обычно не так много одинаковых закрывающих блоков, чтобы их перепутать, но бывает не так мало вообще разных, чтобы не запутаться хотя без комментария. Но VB.NET контролирует еще и совместимость (комментарии на это неспособны) открывающего и закрывающего слова, что IMHO немаловажно.

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

так любой редактор умеет подсвечивать парные скобки, а вот насчет аналогичного с End Something я не уверен

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

} совместима с любой {

Комментарий должен объяснять что и зачем делается, а не как это делается. Как это делается объясняет код.

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

паттерны появились не в джаве и не бывает такой жизни при которой их использование было бы не оправданным

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

так любой редактор умеет подсвечивать парные скобки, а вот насчет аналогичного с End Something я не уверен

Соответствующие IDE типа Rider и VisualStudio очевидно умеют, в т.ч. и сворачивание блоков (уже очень давно).

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

} совместима с любой {

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

sanyo1234
()
Ответ на: комментарий от no-such-file

По-теме то есть что сказать? За тебя вон товарищ учёный отдувается. Правда он там слился. Ты правда тоже, но втихую.

Срезал (C)

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

не всегда есть возможность открыть код в IDE, особенно это касается скриптовых языков типа пипона

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

Чем подход VB поможет?

В VB.NET есть несколько видов циклов, у них разные закрывающие слова. К тому же кроме циклов очевидно будут и другие блоки.

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

не всегда есть возможность открыть код в IDE, особенно это касается скриптовых языков типа пипона

Для скрипта VB.NET будет вызван компилятор, который отлинтит заранее.

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

Внезапно в других ЯП тоже есть разные циклы. Но вот у меня два for вложенных… упс? Причем окончания циклов могут быть разнесены сильнее чем на один экран

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

код не собирающийся без линтера это вообще рак имхо, тем более скриптовый

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

Внезапно в других ЯП тоже есть разные циклы.

У которых закрытие блока происходит через } для любого типа блока? В отличие от VB.NET:

Next
Loop
End While

Но вот у меня два for вложенных… упс? Причем окончания циклов могут быть разнесены сильнее чем на один экран

Очевидно, что в таком случае придется использовать комментарий, но в целом такие случаи не слишком частые, когда между двумя Next нет, к примеру, End If или End Select и т.п.

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

Особенно удобен универсальный блок Do Loop:

Do [ { While | Until } condition ]
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
' -or-
Do
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop [ { While | Until } condition ]
sanyo1234
()
Ответ на: комментарий от sanyo1234

Еще раз:

  1. если код компактный/простой, то эта фича VB не нужна.
  2. если код достаточно сложный, то эта фича VB не поможет, нужны комментарии

Где то между этими двумя предельными случаями находится промежуточный случай, когда фича VB наверное полезна. Но полезность этой фичи наглухо убивается недостатками VB (в моей области деятельности так точно).

Для скрипта VB.NET будет вызван компилятор, который отлинтит заранее.

ЯННП не понял, но мне уже не нравится. Я работаю удаленно в баше через ssh, иногда через цепочку ssh. Какой к фигам компилятор, где я его на кластере возьму? Там нет никакого VB.NET и вообще .NET и не будет никогда потому что он нафик никому там ненужен. даже если он сам комментарии будет писать и плясать при этом ламбаду.

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

Где то между этими двумя предельными случаями находится промежуточный случай, когда фича VB наверное полезна.

При оптимальном разбиении кода на отдельные методы эта фича VB.NET проявляется чуть реже, чем всегда. А если не проявляется, то значит наступил момент для рефакторинга проблемного фрагмента кода.

Но полезность этой фичи наглухо убивается недостатками VB (в моей области деятельности так точно).

Это какими?

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

ЯННП не понял, но мне уже не нравится. Я работаю удаленно в баше через ssh, иногда через цепочку ssh.

Для обучения, подходящий язык программирования (комментарий)

Какой к фигам компилятор, где я его на кластере возьму? Там нет никакого VB.NET

В контейнере очевидно? Кроме того современный .NET уже может генерить нативные сборки аналогично GoLang.

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

см историю развития этих языков. всё за последние лет двадцать это заимстования фич и стиля из функциональщины.

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

За последние лет 20 появилось несколько новых популярных языков. Например, GoLang, Rust, Zig, и другие. Они не функциональные.

Можно говорить, что угодно, но это самые популярные языки из новых.

emorozov
()

Из того, с чем столкнулся лично.

  1. Язык почти неюзабелен без специализированной инфраструктуры.

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

1.2. В процессе редактирования (особенно удаления куска кода) очень легко нарушить виртуальные операторные скобки. Без подсказок редактора снова никак.

1.3. Повреждение форматирования ведет к необратимому разрушению логики. И за примером далеко ходить не надо. На этом самом форуме, если запостить код без специального тега, сабж сразу сдохнет. В то же время любому современному языку будет полностью насрать.

  1. Язык чертовски медленный.

2.1. Он не просто медленный, как, например, VB, он – гребаная черепаха. Вообще непонятно, чем это чудовище занимается в перерывах между обработкой строк кода.

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

2.3. На каждый чих, чтобы не тормозило, предлагается использование внешних либ, написанных на нормальных языках. Так и хочется спросить: «А нахрена тогда нужен сабж?».

2.4. Так называемые «компиляторы», если судить по результатам их работы, то ли совсем не компилируют, а лишь пакуют бандл из исходника и интерпретатора, то ли компилируют так хреново, что результат все равно не меняется.

quwy
()
Ответ на: комментарий от no-such-file

Ой, вы даже без линтера пишете код?!

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

Rust

язык, в котором первые туториалы рассказывают о местом Maybe, а потом о местных тайп-классах

ну да, там ничего не заимствовано из хаскеля /s

GoLang

всё, что нужно знать о Go

Zig

популярный язык

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

Да даже GIL в 90% обсуждают потому, что не различают процесс и тред.

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

Перейти с 2 на 3 было элементарно просто, для этого были очень удобные инструменты и долгий и удобный график перехода

Настолько удобный, что у нас студентоузы до сих пор правят код на python2 и переводить всё на python3 не торопятся.

А те кто фигачил на фортране как использовали F77 так и используют.

luke ★★★★★
()

Найс у джава «архитекторов» подгорело!

Люблю питон хотя бы за это.

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

2.1. Он не просто медленный, как, например, VB, он – гребаная черепаха. Вообще непонятно, чем это чудовище занимается в перерывах между обработкой строк кода.

VB.NET (полноценный .NET компилятор в IL code) генерит код, сравнимый по скорости с C#:

https://programming-language-benchmarks.vercel.app/python-vs-csharp

https://visualstudiomagazine.com/blogs/data-driver/2022/08/net-7-performance.aspx

Для VB.NET свойственны по сути такие же преимущества, что и для C#:

https://hackr.io/blog/c-sharp-vs-python

И почти все либы CPython (включая DevOps, ML, etc.) доступны из любого .NET языка в т.ч. из VB.NET и C# через Python.NET

.NET давно уже доступен на Linux:

https://learn.microsoft.com/en-us/dotnet/core/install/linux

и немного даже на более экзотических осях:

https://openports.pl/path/lang/mono

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 3)
Ответ на: комментарий от quwy

1.2. В процессе редактирования (особенно удаления куска кода) очень легко нарушить виртуальные операторные скобки. Без подсказок редактора снова никак.

Опять-двадцать пять. Говорят те, кто не работал никогда с Python. Мы десятилетиями редактируем код на Python. И копипейстим, и удаляем блоки. Без каких-либо проблем вообще.

2.1. Он не просто медленный, как, например, VB, он – гребаная черепаха. Вообще непонятно, чем это чудовище занимается в перерывах между обработкой строк кода.

Во-первых, он не настолько уж медленный. Для интерпретируемого языка довольно шустрый. Быстрее интерпретатор сделать сложно по очевидным причинам (работать приходится с обёртками типов, как минимум, поэтому). Python, например, долгое время, а может быть даже сейчас, быстрее Ruby. С другими интерпретаторами не видел сравнения.

Во-вторых, есть очень быстрый PyPy.

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

Когда Python создавался, это было никому не нужно: ещё 20 лет после этого, в основном везде был один проц с одним ядром.

В последние годы это стало не так, но с другой стороны, треды нужны далеко не всем и не во всех приложениях. Это не какое-то универсальное решение для всех проблем.

И разработчики Python в курсе ситуации, и работают над тем, чтобы решить проблемы, возникающие из-за GIL. Да, долгое время эта проблема игнорировалась, но последние года 4 идёт плотная работа, чтобы её решить, не сломав обратную совместимость.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от caryoscelus

ну да, там ничего не заимствовано из хаскеля /s

Это не делает Rust фунциональным языком. Ни разу.

всё, что нужно знать о Go

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

emorozov
()

Ебучие пробелы вместо скобок.

BlackJack
()

Некоторые люди, освоив новый язык, начинают требовать от него то, что он заведомо не пытался предоставить. Подобно гоголевской невесте, которая мечтала совместить губы Никанора Ивановича с носом Ивана Кузьмича и проч. частями других людей в идеальном воображаемом женихе. От Питона требуют: быстроты исполнения; настоящей многопоточности без глобальной блокировки; синтаксиса, позволяющего создавать многострочные (лол, T9 сначала исправил на «многостраничные») лямбды; статической типизации и проч. До кучи 3я версия поломала совместимость со старым кодом. Плюс «нестандартное» решение с округлением при целочисленном делении, которое вроде как тоже поломали при переходе на новую версию.

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

Я про классический VB, на котором до сих пор работает хренова туча внутри-корпоративных приложух.

Про .NET в курсе. Там, вроде такая оказия была, что некоторые возможности самого .NET становились доступны в VB даже раньше, чем в C#.

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

Там, вроде такая оказия была, что некоторые возможности самого .NET становились доступны в VB даже раньше, чем в C#.

Раньше такое случалось довольно часто, но последние годы развитие VB.NET как языка почти остановлено, но он по прежнему будет поддерживаться совместимым с Visual Studio и новыми релизами .NET

Т.е. с точки зрения динамики его развития он на данный момент походит на VBA, который только поддерживается в любых новых версиях Windows и MS Office, но без языковых новшеств уже около 20 лет.

А с точки зрения паритета с языковыми возможностями C#, то наверно VB.NET соответствует C# примерно 2015-2016 года, которых более чем достаточно для работы, в нем есть и async и лямбды и LINQ и т.п. Возможность задействовать почти любые либы из C#, а через Interops из Python, PHP, JavaScript, etc.

Как язык программирования (инновации к синтаксису) VB.NET теперь развивается в другом проекте: Mercury

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

например городить ентырпрайз на пухапэ или переиспользуемый код без ооп

О, лошпеды в треде! А давай, дружочек, ты не расскажешь о Haskell или, на худой конец F#. Потом твои высеры про ООП головного мозжечка мы обсудим.

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

И копипейстим, и удаляем блоки. Без каких-либо проблем вообще.

Да, ну давайте, опишите алгоритм вставки куска исходного текста в условном nano, когда этот кусок по отступам на шестнадцать позиций отличается от отступов в том месте, куда его вставляют. Жутко интересно.

Для интерпретируемого языка довольно шустрый.

Я, наверное, открою страшную тайну, но «чистым» интерпретатором сегодня не зазорно оставаться разве что bash и компании. Если сабж и в правду интерпретирует построчно, то это многое объясняет, и это адово позорище.

Когда Python создавался, это было никому не нужно: ещё 20 лет после этого, в основном везде был один проц с одним ядром.

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

треды нужны далеко не всем и не во всех приложениях

Треды сегодня – единственное средство утилизации более 10-15% мощности процессора. Язык, который принципиально не позволяет использовать 85-90% вычислительных ресурсов дешевого домашнего компьютера, не имеет права существовать в широком продакшене. И только гигантская толпа скрипткодеров держит его на плаву.

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

принципиально не позволяет использовать 85-90% вычислительных ресурсов дешевого домашнего компьютера

А разве нельзя создать несколько процессов и их как-то оркестрировать?

Есть ли языки с динамической/утиной типизацией, где потоки (нормальные, а не green threads) вообще есть или даже сделаны хорошо?

yu-boot ★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)