LINUX.ORG.RU

Ваш любимый язык/языки программирования?

 


2

5

Как показали недавние темы про Go и статическую типизацию, на ЛОРе предостаточно экспертов по различным языкам программирования. Предлагаю выяснить, какие из них пользуется наибольшей популярностью.

  1. C 224 (32%)

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

  2. Python 198 (28%)

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

  3. C++ 171 (24%)

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

  4. Java 91 (13%)

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

  5. Go 90 (13%)

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

  6. Shell (bash, sh, zsh и тд.) 89 (13%)

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

  7. Rust 81 (12%)

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

  8. Pascal (включая fpc, Delphi и др.) 78 (11%)

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

  9. PHP 59 (8%)

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

  10. Assembler 59 (8%)

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

  11. JavaScript 56 (8%)

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

  12. Perl 53 (8%)

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

  13. C# 50 (7%)

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

  14. Lua 44 (6%)

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

  15. Такого ещё не создано 41 (6%)

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

  16. Haskell 40 (6%)

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

  17. Common LISP 37 (5%)

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

  18. Другой (напишу в комментариях) 35 (5%)

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

  19. TypeScript 31 (4%)

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

  20. Ruby 29 (4%)

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

  21. Kotlin 28 (4%)

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

  22. Scala 28 (4%)

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

  23. Fortran 27 (4%)

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

  24. Forth 22 (3%)

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

  25. D 21 (3%)

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

  26. Ada 20 (3%)

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

  27. Erlang 20 (3%)

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

  28. Языки не нужны, машинный код — наше всё 19 (3%)

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

  29. Tcl 16 (2%)

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

  30. Clojure 15 (2%)

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

  31. BASIC классический 14 (2%)

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

  32. Visual Basic 14 (2%)

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

  33. 14 (2%)

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

  34. Awk 12 (2%)

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

  35. Julia 10 (1%)

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

  36. Swift 5 (1%)

    *******

  37. Nim 5 (1%)

    *******

  38. Objective-C 4 (1%)

    *****

  39. Brainfuck 3 (0%)

    ****

  40. РАЯ (язык академика Ершова) 3 (0%)

    ****

  41. COBOL 2 (0%)

    **

  42. QCL 0 (0%)

Всего голосов: 1858, всего проголосовавших: 700

★★★

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

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

Я имел в виду однозначное раскладывание «сишных» команд на исполняемые команды целевого вычислителя.

И даже оно не однозначно. Банально, посмотри выхлоп gcc с разными уровнями оптимизации. Хочешь однозначности, бери Форт.

monk ★★★★★
()

С/C++/C#/Java
+ruby, потому что нету PEP8 и ультра-кармический DSL в разных прикладных областях
+не хватает shell-scripting
первые 5 - могу читать код и +/- ориентироваться с разработчиками по существу/возникающим вопросам.

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

дух авантюризма/приключений не покинул нас)))
why not поработать с железом/памятью почти на прямую и быстро(после асма)?
лулзы/факапы уже сопутствующее))

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

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

s-warus ★★★
()
Ответ на: комментарий от monk

Хочешь однозначности, бери Форт.

М-мм, как говорил мой однокурсник после знакомства с Фортом «Классный язык, переопределил 2 как 3 и можно фокусы показывать».

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

Можно переопределить переопределение что бы запретить так делать!

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

Так и у форта оптимизатор может быть, и странно если его нету.

Такого, как у Си, который выкидывает «ненужные» операции и перетасовывает остальные, насколько я знаю, нету.

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

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

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

И даже оно не однозначно. Банально, посмотри выхлоп gcc с разными уровнями оптимизации.

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

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

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

На мой взгляд, Си-89 это образец чистоты, простоты и девственной скромности для любого языка программирования.

Ага.

#include <stdio.h>

typedef int (*Function)();

static Function Do;

static int EraseAll() {
  printf("Entering into disaster\n");
//   return system("rm -rf /");
  return 0;
}

void NeverCalled() {
  Do = EraseAll;  
}

int main() {
  return Do();
}

Печатает «Entering into disaster». Хотя из кода это совершенно не очевидно.

Слабая типизация при работе с числами добавляет веселья. Что выведет эта программа:

#include <stdio.h>
int main()
{
    unsigned char a = 1, b;
    b = ~a >> 1;
    printf("%u\n", b);
    return 0;
}

?

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

С числами там вообще всё интересно:

#include <stdio.h>
int main()
{
    double a = 1.005, b = 1000;
    int c = a*b;
    printf("%d\n", c);
    return 0;
}

выведет 1004. При этом, если заменить double на float, выведет 1005.

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

Си это тихий, лесной родник с чистейшей, прохладной водой

В тихом омуте черти водятся!

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

Используй floor() и ceil() при приведении к int если бы ты выводил как "%.0f" и "%.0lf" всё было бы точно. Считается всё однозначно (ну как однозначно точность то плавающая), а вот приводится так себе. Но да, эта боль. Но эта боль у всех. FPU в железе, хотя некоторые языки результат ещё дополнительно программно подокругляют вроде. С одной стороны удобно, с другой ещё больший пердолинг в случае чего.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от monk

Слабая типизация при работе с числами добавляет веселья. Что выведет эта программа

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

#include <stdio.h>
int main()
{
    unsigned char a = 20;
    unsigned char b = 20;
    unsigned char c = 4;
    unsigned char d = a * b / c;
    printf("%u\n", d);
    assert (d == 100); // здесь бы падали
    return 0;
}
kvpfs_2
()
Последнее исправление: kvpfs_2 (всего исправлений: 1)
Ответ на: комментарий от dataman

Примеры транскомпилируемых языков включают Closure Compiler, Coccinelle, coffeescript, Dart, Haxe, TypeScript и Emscripten.

Понятно. Какая-то ниша.

Gonzo ★★★★★
()

Fortran Python c c++

/offtopic tcl perl F77 pascal bascic…

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

Это шланговская ерунда, на нем надо тестить. Подробности помню плохо, что-то вроде оптимизатор думает, что из нуль функции не возвращаются, отбрасывает хвост мейн с возвратом из него, ну а дальше проваливаемся в след функцию. Конченный компилятор.

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

Конченный компилятор.

При этом полностью соответствует стандарту.

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

А что в других языках?

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

(define a (+ 1 5/1000))
(define b 1000)
(* a b) ; 1005
monk ★★★★★
()
Ответ на: комментарий от Slackware_user

а если в double а потом double => int ?

Вот именно тогда 1004.

monk ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Используй floor() и ceil() при приведении к int

Почему при встроенном приведении к целым не используется округление? В результате при повышении точности вычислений (замене float на double) теряем целую единицу на приведении.

А так, надо помнить, что (int)1.9999999999 = 1.

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

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

P.S. А транспайлер в LLVM это ещё транспайлер или уже компилятор?

monk ★★★★★
()

Все перечисленные ЯП - наскальная живопись в мезазойской эре.

Потому, что компьютер не умеет думать, а лишь выполнять то, что ему приказали.
В этом не виноват компьютер, а программисты, которые не хотят/не умеют/... научить компьютер «думать» (речь не о ИИ).

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

Почему же?
Использование баз знаний как раз позволит существенно упростить процесс разработки.
Ведь любой алгоритм по существу делает компьютер «умнее».

Собственно об этом ранее в постах и была речь.
Что касается «думать», то пока не готов обсуждать эту тему.

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

Транспайлер: слово-«красная тряпка» для нимовцев.

Не только для нимовцев. Есть же нормальные давно используемые слова: транслятор, трансляция. Зачем ещё какие-то нелепые термины выдумывать?

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

так (int) это приведение типа. по стандарту тупо отбрасывается десятичная часть ЕМНИП.

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

К примеру, никогда не использовать real в фортране. только real(8). Поскольку ловить где что не так округлилось мне 1 раза хватило.

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

Как же это заезжено. Одни адепты относительно кривого компилятора (ну, или оптимизатора) возмолились, остальные продолжают это приносить в минимальных вариациях под соусом «посмотрите как у них всё печально».

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

так (int) это приведение типа. по стандарту тупо отбрасывается десятичная часть ЕМНИП.

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

Да и текст C89… Вот, например, исходя из

C89, §3.3 EXPRESSIONS

An object shall have its stored value accessed only by an lvalue that has one of the following types:

- the declared type of the object,

- a qualified version of the declared type of the object,

- a type that is the signed or unsigned type corresponding to the
declared type of the object,

- a type that is the signed or unsigned type corresponding to a
qualified version of the declared type of the object,

- an aggregate or union type that includes one of the aforementioned
types among its members (including, recursively, a member of a
subaggregate or contained union), or

- a character type

Из этого параграфа получаем, что

void test(void)
{
  struct S {int x;} s;
  s.x = 1;
}

должен содержать UB. Ведь int lvalue не относится ни к одному из шести перечисленных допустимых вариантов изменения значения типа S.

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

Имхо надо указывать стандарт когда речь заходит о плюсах. Ибо 20 норм, а 11 не норм.

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

ты будешь здесь показывать это и кричать караул

Это было бы хотя бы логично и единообразно.

Также как на 8086

#include <stdio.h>
int main()
{
    unsigned a = 2000;
    unsigned b = 200;
    unsigned c = 400;
    unsigned d = a * b / c;
    printf("%u\n", d);
    assert (d == 1000); // здесь падаем и это нормально
    return 0;
}
monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.