Модератор
Эксперт Java
 Аватар для alecss131
2897 / 1403 / 412
Регистрация: 11.08.2017
Сообщений: 4,494
Записей в блоге: 2
06.04.2026, 16:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Curry Посмотреть сообщение
даже в плюсы давно завезли
а что за замыкания в плюсах? лямбды все же это иное (приведенный ниже мною код работает иначе чем лямбда в плюсах)
Цитата Сообщение от Curry Посмотреть сообщение
А С++ по факту не кроссплатформенный. Это не сколько свойство языка, сколько исторический тренд. Так уж с пакетами в плюсах, начнёшь собирать что то, намучаешься. С остальными вышеперечисленными языками в кроссплатформу гораздо проще.
Ржавчина в этом плане не сильно от плюсов отличается. И правильно написанная с/с++ библиотека с нормальной системой сборки (а не всякие гнутые извращения) собирается без проблем. Тут ещ вопрос что считать кроссплатформенностью, у C#,java,kotlin грубо говоря бинарники работают везде, а ржавчина/go/c++/c/swift один код собирается везде, ну если не использовать ос специфичные вещи. У меня проблемы со сборкой только с гнутыми либами, но это пингвины и для них геморой это норма, они любят страдать.
Цитата Сообщение от testuser2 Посмотреть сообщение
JS есть 2 вещи
а что там с захватом окружения? если захваченное выйдет из области видимости и если поменять это значение
то есть как поведет себя аналог вот этого кода (расширения apple для языка си, работает в clang с blocks)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <Block.h>
 
typedef int (^IntBlock)();
 
IntBlock makeCounter(int start, int increment) {
    __block int i = start;
    return Block_copy( ^(void) {
        int ret = i;
        i += increment;
        return ret;
    });
}
 
int main(void) {
    IntBlock mycounter0 = makeCounter(0, 1);
    IntBlock mycounter1 = makeCounter(1, 2);
    printf("%d\n", mycounter0());
    printf("%d\n", mycounter1());
    printf("%d\n", mycounter0());
    printf("%d\n", mycounter1());
    printf("%d\n", mycounter0());
    printf("%d\n", mycounter1());
    Block_release(mycounter0);
    Block_release(mycounter1);
    return 0;
}
и свифтовый вариант
Swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typealias IntBlock = () -> Int
 
func makeCounter(start: Int, increment: Int) -> IntBlock{
    var i = start
    return {
        let ret = i
        i += increment
        return ret
    }
}
 
 
let mycounter0 = makeCounter(start: 0, increment: 1)
let mycounter1 = makeCounter(start: 1, increment: 2)
print(mycounter0())
print(mycounter1())
print(mycounter0())
print(mycounter1())
print(mycounter0())
print(mycounter1())
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2026, 16:34
Ответы с готовыми решениями:

Какой язык программирования лучше? (2)
Продолжение темы. Начало

Какой язык программирования лучше?
Какой на ваш взгляд самый универсальный(т.е. одинаково хорош во всех сферах программирования: веб, приложения и т.д.), лучший?

Какой язык программирования лучше для создания игры???
Какой язык программирования лучше для создания игры, С++ или С#???

631
 Аватар для voraa
1299 / 1295 / 191
Регистрация: 21.01.2024
Сообщений: 6,005
06.04.2026, 16:38
Цитата Сообщение от testuser2 Посмотреть сообщение
Я бы отметил в JS еще одну, на мой взгляд правильную вещь - это возможность приделывать свои методы к чему угодно с исользованием this.
Вот "к чему угодно" это как раз минус.
Было много библиотек, где к массивам приделывались свои методы. И когда методы с таким названием наконец решили ввести в стандарт, то это вызвало некоторые проблемы.
К своим объектам приделывай что угодно. Но к стандартным - не нужно.

Добавлено через 2 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
у C#,java,kotlin грубо говоря бинарники работают везде, а ржавчина/go/c++/c/swift один код собирается везде,
Можно на "голой системе" (вот только только установил ОС) запустить что нибудь из java или C#?
А бинарник Go можно.
1
Модератор
Эксперт Java
 Аватар для alecss131
2897 / 1403 / 412
Регистрация: 11.08.2017
Сообщений: 4,494
Записей в блоге: 2
06.04.2026, 16:41
Цитата Сообщение от voraa Посмотреть сообщение
А бинарник Go можно.
Что-то мне предвидится что и это тоже нельзя. Даже для с/с++ нужно рантайм ставить Как минимум vcruntime потребуется. Он нужен не только для плюсов. Исключения разве что компилятор использует msvcrt вместо ucrt или чтото из гнутого
0
 Аватар для voraa
1299 / 1295 / 191
Регистрация: 21.01.2024
Сообщений: 6,005
06.04.2026, 17:26
Цитата Сообщение от alecss131 Посмотреть сообщение
а что там с захватом окружения? если захваченное выйдет из области видимости и если поменять это значение
то есть как поведет себя аналог вот этого кода (расширения apple для языка си, работает в clang с blocks)
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function makeCounter(start, increment) {
    let i = start;
    return function () {
        let ret = i;
        i += increment;
        return ret;
    };
}
 
    let mycounter0 = makeCounter(0, 1);
    let mycounter1 = makeCounter(1, 2);
    console.log (mycounter0()); //-> 0
    console.log (mycounter1()); //-> 1
    console.log (mycounter0()); //-> 1
    console.log (mycounter1()); //-> 3
    console.log (mycounter0()); //-> 2
    console.log (mycounter1()); //-> 5
Добавлено через 2 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
Даже для с/с++ нужно рантайм ставить Как минимум vcruntime потребуется.
В Go весь необходимый рантайм в бинарнике (екзешнике) содержится.

Добавлено через 34 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
а что там с захватом окружения? если захваченное выйдет из области видимости и если поменять это значение
то есть как поведет себя аналог вот этого кода (расширения apple для языка си, работает в clang с blocks)
В Go такой же результат. Только короче, чем в C
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main
 
import (
    "fmt"
)
 
func makeCounter(start int, increment int) func() int {
    i := start
    return func() int {
        ret := i
        i += increment
        return ret
    }
}
 
func main() {
    mycounter0 := makeCounter(0, 1)
    mycounter1 := makeCounter(1, 2)
    fmt.Println(mycounter0()) //-> 0
    fmt.Println(mycounter1()) //-> 1
    fmt.Println(mycounter0()) //-> 1
    fmt.Println(mycounter1()) //-> 3
    fmt.Println(mycounter0()) //-> 2
    fmt.Println(mycounter1()) //-> 5
}
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,684
Записей в блоге: 9
06.04.2026, 17:28
Цитата Сообщение от alecss131 Посмотреть сообщение
а что за замыкания в плюсах? лямбды все же это иное
Замыкания текущего контекста в функции. А лямбда функция это функция определяемая в месте вызова. В большинстве языков лямбды позволяют замыкания.

расширения apple для языка си и Swift я не знаю.

Цитата Сообщение от alecss131 Посмотреть сообщение
Ржавчина в этом плане не сильно от плюсов отличается.
У меня были проблемы со сборкой qt для raspberry pi и со сборкой wxWidgets для винды. Может у меня руки кривые, но на остальных языках таких серьёзных проблем не бывало. Ну ещё кроме чистых С.
В сравнении с С++ rust появился позже, когда уже все понимали что нужна кроссплатформенность, и пакеты для него гораздо более кроссплатформенны. Говорю, в том числе и из своего опыта.

Добавлено через 2 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
то, что мне нравится, в том примере, который я приводил - это то, что при первом запуске происходит инициализация данных функции, затем мы меняем указатель функции, и при последующих вызовах используем уже инициализированные данные
Захожу на https://runjs.app/play , ввожу ваш код и получаю
'Инициализация'
123
'Инициализация'
123
[Function: fn2]
'Инициализация'
123
UB ?
0
 Аватар для voraa
1299 / 1295 / 191
Регистрация: 21.01.2024
Сообщений: 6,005
06.04.2026, 17:47
Цитата Сообщение от Curry Посмотреть сообщение
Захожу на https://runjs.app/play , ввожу ваш код и получаю
Очень странный результат.
При запуске в консоле браузера, как и должно быть
Инициализация
123
123
5555
Добавлено через 9 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
мы делаем fn1 = fn2 и (возможно ценные) данные в fn1 уничтожаются.
Просто надо понимать основы js. В js нет переменных - объектов (функция - это тоже объект) Есть только ссылки (указатели) на объекты. А указатели можно переприсваивать.
0
1409 / 869 / 93
Регистрация: 08.02.2017
Сообщений: 3,717
Записей в блоге: 2
06.04.2026, 18:19
Цитата Сообщение от Curry Посмотреть сообщение
Захожу на https://runjs.app/play , ввожу ваш код и получаю
Нажмите F12 в браузере и проделайте то же самое.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,684
Записей в блоге: 9
06.04.2026, 18:38
Цитата Сообщение от testuser2 Посмотреть сообщение
Нажмите F12 в браузере и проделайте то же самое.
Везде одинаково должно бы выполняться. Если это не так, то или это UB, или нужно считать https://runjs.app/play глючным.
А он первым предлагается по запросу js online.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,625
06.04.2026, 18:49
Цитата Сообщение от Curry Посмотреть сообщение
А он первым предлагается по запросу js online.
не у всех так будет. у меня, например, по этому запросу первым предлагается https://www.programiz.com/java... -compiler/
кстати, я знаком с сайтом https://www.programiz.com/, использую на телефоне для С++

так вот, я получил

Code
1
2
3
4
Инициализация
123
123
5555
0
1409 / 869 / 93
Регистрация: 08.02.2017
Сообщений: 3,717
Записей в блоге: 2
06.04.2026, 18:59
Цитата Сообщение от Curry Посмотреть сообщение
Везде одинаково должно бы выполняться. Если это не так, то или это UB, или нужно считать https://runjs.app/play глючным.
А он первым предлагается по запросу js online.
Я вообще на WSH-ном JScript это изначально проверял и саму концепцию уловил, а там движек соответствует какой-то старой спецификации JS.
0
 Аватар для voraa
1299 / 1295 / 191
Регистрация: 21.01.2024
Сообщений: 6,005
06.04.2026, 19:00
Цитата Сообщение от Curry Посмотреть сообщение
А лямбда функция это функция определяемая в месте вызова.
Как то фраза странно звучит.
Лямбда функции - это просто анонимные функции, которые могут быть переданы как параметр и возвращены как результат
1
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,684
Записей в блоге: 9
06.04.2026, 19:13
Цитата Сообщение от voraa Посмотреть сообщение
Как то фраза странно звучит.
ладно, пусть будет "Лямбда функция это функция определяемая в месте применения".
0
 Аватар для voraa
1299 / 1295 / 191
Регистрация: 21.01.2024
Сообщений: 6,005
06.04.2026, 19:23
Цитата Сообщение от Curry Посмотреть сообщение
определяемая в месте применения
Что такое "применение" функции? Вызов?
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,684
Записей в блоге: 9
06.04.2026, 19:58
Цитата Сообщение от voraa Посмотреть сообщение
Что такое "применение" функции? Вызов?
Может вызов, может присваивание значения лямбды переменной, полю структуры, возврат лябды по return.
0
8 / 12 / 3
Регистрация: 21.10.2023
Сообщений: 221
16.04.2026, 21:42
Однозначно, ассемблер. В конечном итоге, всё что запускается на компьютере исполняется процессором на его опкодах.
Из ассемблеров лучший - FASM. Для недовольных - NASM и TASM. MASM - д..мо от микрософта. ИМХО.
0
16.04.2026, 21:55

Не по теме:

Цитата Сообщение от Elijah Tomcat Посмотреть сообщение
Однозначно, ассемблер.
:D ㅤㅤ

0
 Аватар для voraa
1299 / 1295 / 191
Регистрация: 21.01.2024
Сообщений: 6,005
16.04.2026, 22:13
Цитата Сообщение от Elijah Tomcat Посмотреть сообщение
Однозначно, ассемблер.
Прога будет работать и на интелах и на армах?
0
8 / 12 / 3
Регистрация: 21.10.2023
Сообщений: 221
16.04.2026, 23:31
Royal_X,
Вообще-то тема - "Какой язык программирования лучше"!
0
46 / 125 / 11
Регистрация: 24.04.2019
Сообщений: 932
17.04.2026, 10:29
Elijah Tomcat, нет однозначно лучшего языка. Есть задачи и есть языки программирования для решения этих задач. Для какой-то задачи больше подходит С, для какой-то С++, а для какой-то ассемблер и т. д. Сравнивать разные языки в контексте "какой язык программирования лучше" некорректно.
0
 Аватар для Enifan
1853 / 1201 / 502
Регистрация: 14.10.2018
Сообщений: 3,343
17.04.2026, 11:03
Никакой язык не лучше, все они одинаковые. Опробовав 5 языков я понимаю что мне не интересно учить новый, и если мне надо писать на новом языке - я просто пишу и по ходу дела подглядываю синтаксис, и понимаю что все это "разнообразие" - просто понты
Code
1
2
3
4
5
NULL  C, C++
null    Java, C#
None   Python
nil     Go
null, undefined   JS
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(1)
    printf("C \n");
 
if(a == 8)
    std::cout << "C++" << std::endl;
 
if (num1 > num2)
    Console.WriteLine($"Число {num1} больше числа {num2}");   C#
 
if language == "english":
    print("Python")
 
if a < b {
        fmt.Println("Go")
    }
Разница только в том, под что пишется программа, для сайтов одни языки, для игр другие, для андроида третьи и тд
Как по мне - пора отказаться от большинства этого мусора и оставить только 1 язык, или пусть под капотом они могут быть разными, но синтаксический сахар должен быть одинаковым для всех, как собственно и базовые библиотеки.
Конечно мы можем затронуть производительность и зная что иерархия создания такова C -> C++ -> C# то понятно дело что C будет быстрее чем C#, но кто мешает ускорить компилятор и на выходе получить одинаковые файлы asm
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2026, 11:03

Какой язык программирования мне ст0ит учить?
... оканчивю мат. школу, и хочу поступить на программиста. Программирую (неплохо) на Паскале. Что мне нужно? Може С++? Или...?

Какой язык лучше / прибыльнее?
И так, мне 16 лет, седня днем пойду подавать документы в техникум на программиста соответственно. И назрел вопрос какой язык...

Какой язык веб-программирования выбрать? Плюсы\минусы
Вопрос что ни на есть из раздела священных, но все же... Какой язык веб-программирования кто предпочитает? У кого какие плюсы и...

Какой язык лучше изучать с нуля?
Привет Всем!! Ребята подскажите пожалуйста какой язык лучше изучать с нуля ????? За ответ заранее спасибо!!!

Какой язык лучше изучать C или C++
Всем здравствуйте! Я новичок в программировании(знаю только Паскаль). Сейчас выбираю, какой язык учить: С или С++. Подскажите, пожалуйста,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
520
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru