LINUX.ORG.RU

ЯП для души

 


7

4

Если нет души, то можно в рабочих целях

  1. Python 381 (22%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. C 252 (15%)

    *******************************************************************************************************************************************************************************************************************

  3. Другой (в комментариях) 220 (13%)

    ****************************************************************************************************************************************************************************************

  4. C++ 197 (12%)

    *********************************************************************************************************************************************************************

  5. Rust 106 (6%)

    *****************************************************************************************

  6. Haskell 99 (6%)

    ***********************************************************************************

  7. Go 94 (6%)

    ******************************************************************************

  8. Java 86 (5%)

    ************************************************************************

  9. JavaScript 52 (3%)

    *******************************************

  10. PHP 50 (3%)

    *****************************************

  11. C# 49 (3%)

    *****************************************

  12. Ruby 49 (3%)

    *****************************************

  13. Delphi 48 (3%)

    ****************************************

  14. Swift 10 (1%)

    ********

  15. SQL 8 (0%)

    ******

  16. Dart 8 (0%)

    ******

Всего голосов: 1709



Проверено: Satori ()

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

Уже тогда все нынешние языки программирования были. И ничего не мешает перевести проекты на другой язык.

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

А что вообще нового появилось?

Не понял вопроса. Где появилось? В среде наколенных пердолепроектов да, много всего на сишке до сих пор всплывает. Ты лучше перечисли, какие профессиональные программные продукты пользовательского уровня за последние 15 лет появились на сишеньке.

Ааа, ну может еще и Линус глупый, раз уж говорит что лучше чем С языка для ядра еще не придумали?

Торвальдс не истина в последней инстанции. Все люди обладают определённой косностью мышления, и Линус, при всём уважении, не исключение.

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

А в том же GIMP порядка миллиона строк, и переписывать его имеющимися силами уже поздновато.

Зачем полностью переписывать? Можно просто новые вещи делать на новом языке.

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

А какие вообще появились? Flatpak не пойдет?

Торвальдс не истина в последней инстанции. Все люди обладают определённой косностью мышления, и Линус, при всём уважении, не исключение.

Ну проекты на других языках почему то не появляются. C/C++ везде.

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

Иногда сложно пройти мимо

Вместо break надо использовать правильное условие в цикле. Вместо return правильно разбивать на функции. Если возникает break в цикле или return в середине функции, то значит с этим кодом что-то не то и его надо переписать.

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

Optional<T> findFirst(T[] elements, Predicate<T> test) {
    for (T element : elements) {
        if (test.check(element)) {
             return Optional.ofNullable(element);
        }
    }
    return Optional.empty();
}

нужно писать с побочными эффектами за тело цикла, управлением сосотянием, и еще и пустыми итерациями

T findFirst(T[] elements, Predicate<T> test) {
    T result;
    boolean found = false;

    for (T element : elements) {
        if (!found) {
            if (test.check(element)) {
                result = element;
                found = true;
            }
        }
    }

    return found ? Optional.ofNullable(result) : Optional.empty();
}

Удачи

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

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

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

Из всех jvm языков он первый стал официально поддерживаться в андроиде

Это что-то меняет и к чему это?
Google никогда не переживал об API и фреймворках, обратная НЕ совместимость или похороны фреймворка раз в 3-4 года - это их всё.
Посмотри на guava, gwt, angular и кучу других их поделий.

Ты же утверждал что «Java слишком длинная» и что «Котлин показал, что использовать весь функционал jvm меньшим количеством буковок. »
Я просто показал, что на деле это оказалось не так.

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

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

Код в духе AbstractGeneratorFactory generatorFactory = createGeneratorFactory() - это еще не всё программирование. Народ порой использует инты, даблы и прочие типы, для которых хрен сгенеришь автоматически имя переменной.

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

Оба варианта плохи.

int i;
for (i = 0; i < elements.size() && !test.check(elements[i]); i++) { }
return i == elements.size() ? Optional.empty() : Optional.ofNullable(elements[i]);

Reset ★★★★★
()

Статистика жесть. Недаром на хабре нас кличут недоумками

Deleted
()

Питон для души? Всё, пропала индустрия

yoghurt ★★★★★
()

На работе пишу на скале, а по жизни до сих пор люблю плюсы. По ходу стокгольмский синдром

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

В смысле - язык для программирования души?

Тут и думать не о чем — душа сто пудов на ассемблере написана.
1. Мало весит.
2. Работает только на одной конкретной архитектуре (которую, кстати, из-за кучи костылей ещё хрен разберёшь — то ли там CISC, то ли на самом деле RISC с замороченным транслятором поверх).
3. Плохо поддаётся реверс-инжинирингу, но, вероятно, была крайне сложна в разработке*.
4. Любая ошибка приводит к фатальным последствиям для всей системы, и хорошо ещё, если это будут проблемы с нехваткой памяти.

*следствие пунктов 2 и 3 — при истечении жизненного цикла оборудования её отдают разработчику.

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

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

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

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

Ну в расте например очень удобно делать обработку ошибок с помошью восклицательного знака

Вспоминается анекдот про раввина и козу.

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

затребовать от входных данных эффективную реализацию случайного доступа.

А бывают массивы без случайного доступа?

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

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

А предложение использовать цикл for с индексом необоснованно требует произвольный доступ там, где он не нужен. Если отойти от абстрактного мышления, то сегодня там массив, а завтра iterable. И исходное решение не требует по минимуму от входных данных, как и должно.

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

Речь идёт и шла о концепции программирования и циклов, а не о массивах в java

Но в твоей функции задан массив :)

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

Скорее ты специально выбрал ущербный язык на котором сложно писать нормально.

И тут можно обойтись, например, стримом.

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

Если отойти от абстрактного мышления, то сегодня там массив, а завтра iterable.

Замечательно. Смени тип переменной i с int на Iterator.

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

К чему эта твоя демагогия и уход от изначальной темы?

summon
()

нужен опрос что лоровцы подразумевают под душой, ведь её же ниет

Zooma
()
Ответ на: Дожили от shaplov

Его просто побоялись добавлять, вперед же вырвется, на 1 место сразу! Ну выше PHP я думаю уж точно был бы %)

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

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

Ты лучше перечисли какие профессиональные (что это?) программные продукты (не являющиеся средствами разработки) пользовательского уровня вообще появились за последние 15 лет?

grem ★★★★★
()

Nim но язык нужно лечить там серьезные проблемы со стандартной библиотекой да и вообще.

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

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

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

На целых два символа код длиннее?

Да, и это не единственный пример (не говоря уже о том, что java код можно сделать еще короче)
Если ты еще раз прочитаешь предмет спора, то узнаешь, что другой автор утверждал, что код на java длиннее, хотя это далеко не всегда так, я показал только несколько примеров.

Да, это фатальный недостаток

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

Фатальные же недостакти котлин:
программистам по факту придется знать ДВА языка.
Java и котлин.
Вопрос - зачем?!
В реальной работе нет проблемы написать на две буквы меньше или больше.
Это все равно как учить русский и белорусский только по тому, что кое что на русском, а что-то белорусском написать проще.

Теперь еще раз про декларацию типа после имени переменной.
Проблема не в том, что это длиннее (то что это длиннее было упомянуто только по тому, что автор утверждал, что на котлин писать короче). Проблема в том, что это хуже читается - тебе приходится долго искать глазами тип возвращаемого значения.
И проблема в том, что это еще дольше писать в IDE.
Когда ты пишешь Название класса в IDE это редко занимает больше двух трех символов, дальше работает авто-дополнение, при этом когда ты потом пишешь имя переменной IDE тебе сразу предложит разумное имя. С котлин и раст это не так - случилось это, по тому, что авторы языков не подумали об IDE. IDE не может помочь тебе генерироваться имя метода так как еще не знает о типе который ты хочешь вернуть. Как результат, ты пишешь в котлин больше кода, а потом еще и делаешь опечатку.
Итог, мы видим язык, в котором значительных улучшений нет, а суровые недостатки - есть.

Тем, у кого ум не задурманен маркетинговыми глупостями предлагаю пообщаться на эту тему тут:
https://docs.google.com/spreadsheets/d/1pG04eMdC_2u3t7Tab9J8sSoKQ1zZfm5B0vtYu...

Также есть хорошая статья вот тут https://allegro.tech/2018/05/From-Java-to-Kotlin-and-Back-Again.html

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

I can’t imagine a valid use case for shadowing a method argument.

Функциональщики постоянно шадовят. Это позволяет писать код как будто он мутирует переменную несмотря на то что реально она константна. Если шадовинга нет, приходится сочинять 100500 новых имён или узать мутабельные переменные там, где достаточно константных.

q0tw4 ★★★★
()

Школотронский опрос! Неужели кто-то считает PHP или JS - языком?? Тогда у меня для вас плохие новости - в ИТ вы полное днищще. SQL - а его вы как соотносите с ЯП?? На нём что, можно создать окно? Кнопку? Написать тетрис? Кто-то явно переоценивает свои познания в программировании - как говорят, «Вон из профессии!».

matumba ★★★★★
()

Scheme. CL показался на первый взгляд каким-то «старым», что ли… да и Lisp-2 показалось неудобным и некрасивым. Хотя по существу не пользовался им.

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

Как люди в kotlin объявляют логер - я видел минимум 3 варианта,

https://github.com/MicroUtils/kotlin-logging или https://github.com/Lewik/klog

С последним можно сделать так:

abstract class LoggingAware : WithLogging {
	override val log by lazy { KLoggers.logger(this) }
}

а дальше использовать вот так:

class A: LoggingAware() {
  fun a() {
    ...
    log.info { "a=$a, b=$b" }
    ...
    try {
    ...
    } catch (e: Exception) {
      log.error(e) { "some message" }
    }
  }
}
ma1uta ★★★
()
Ответ на: комментарий от ma1uta

«java на батарейках» - реально нужная штука. А вот скала не нужна, так как для функциональщиков есть хаскель, а если нужно в jvm, то обмазыватся категориями - лишнее. Батарейки - всё что нужно для практических нужд. А для теоризирования нужна другая vm.

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

Пфф, кажется, ты не умеешь правильно писать циклы

let find_first elements predicate =
  let rec aux = function
    | hd :: tl -> if predicate hd then Some hd else aux tl
    | [] -> None
  in
  aux elements

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

И потом, твой второй фрагмент кода не эквивалентен — он пробегает по всей коллекции.

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

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

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

Для кого-то это как раз и батарейки. А для кого-то нет, это субъективная оценка.

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

php и js - вполне себе языки. просто ориентированные на веб. sql - просто стандарт формата запросов к БД. тоже язык, хотя и не общего профиля, а DSL.

Iron_Bug ★★★★★
()

SQL: 5 человек

Санитар, пилюлю!

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

Школотронский опрос!

SQL - а его вы как соотносите с ЯП?? На нём что, можно создать окно? Кнопку? Написать тетрис?

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

Часто бывает, что кнопка одна(сделана за 10 минут), а бизнес логики на БД, для получения отчета, целая куча(на несколько дней работы).

PS: Сам считал в 10-11 классе также как ты. Сейчас после 16 лет стажа программистом, работа выглядит совсем другой.

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

Код в духе AbstractGeneratorFactory generatorFactory = createGeneratorFactory() - это еще не всё программирование. Народ порой использует инты, даблы и прочие типы, для которых хрен сгенеришь автоматически имя переменной.

Да, но примитивных типов ощутимо меньше в объектно ориентированных языках (да и не только в них).

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

Scala - это просто язык без сильной оглядки на Java с максимальным упором на продуктивность на строчку кода. Я не знаю хороша или плоха такая установка.

vertexua ★★★★★
()

Раст не только по производительности отстаёт от Си++, но и по популярности среди лоровцев. Приятно.

bonta ★★★★★
()

сишечка порвала совокупность всего того, что попало в категорию «другой».

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

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