Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Модератор
Эксперт Java
 Аватар для alecss131
2896 / 1402 / 412
Регистрация: 11.08.2017
Сообщений: 4,489
Записей в блоге: 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)
Продолжение темы. Начало

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

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

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

Добавлено через 2 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
у C#,java,kotlin грубо говоря бинарники работают везде, а ржавчина/go/c++/c/swift один код собирается везде,
Можно на "голой системе" (вот только только установил ОС) запустить что нибудь из java или C#?
А бинарник Go можно.
1
Модератор
Эксперт Java
 Аватар для alecss131
2896 / 1402 / 412
Регистрация: 11.08.2017
Сообщений: 4,489
Записей в блоге: 2
06.04.2026, 16:41
Цитата Сообщение от voraa Посмотреть сообщение
А бинарник Go можно.
Что-то мне предвидится что и это тоже нельзя. Даже для с/с++ нужно рантайм ставить Как минимум vcruntime потребуется. Он нужен не только для плюсов. Исключения разве что компилятор использует msvcrt вместо ucrt или чтото из гнутого
0
 Аватар для voraa
1299 / 1290 / 191
Регистрация: 21.01.2024
Сообщений: 5,991
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
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 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 / 1290 / 191
Регистрация: 21.01.2024
Сообщений: 5,991
06.04.2026, 17:47
Цитата Сообщение от Curry Посмотреть сообщение
Захожу на https://runjs.app/play , ввожу ваш код и получаю
Очень странный результат.
При запуске в консоле браузера, как и должно быть
Инициализация
123
123
5555
Добавлено через 9 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
мы делаем fn1 = fn2 и (возможно ценные) данные в fn1 уничтожаются.
Просто надо понимать основы js. В js нет переменных - объектов (функция - это тоже объект) Есть только ссылки (указатели) на объекты. А указатели можно переприсваивать.
0
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,704
Записей в блоге: 2
06.04.2026, 18:19
Цитата Сообщение от Curry Посмотреть сообщение
Захожу на https://runjs.app/play , ввожу ваш код и получаю
Нажмите F12 в браузере и проделайте то же самое.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
06.04.2026, 18:38
Цитата Сообщение от testuser2 Посмотреть сообщение
Нажмите F12 в браузере и проделайте то же самое.
Везде одинаково должно бы выполняться. Если это не так, то или это UB, или нужно считать https://runjs.app/play глючным.
А он первым предлагается по запросу js online.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
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 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,704
Записей в блоге: 2
06.04.2026, 18:59
Цитата Сообщение от Curry Посмотреть сообщение
Везде одинаково должно бы выполняться. Если это не так, то или это UB, или нужно считать https://runjs.app/play глючным.
А он первым предлагается по запросу js online.
Я вообще на WSH-ном JScript это изначально проверял и саму концепцию уловил, а там движек соответствует какой-то старой спецификации JS.
0
 Аватар для voraa
1299 / 1290 / 191
Регистрация: 21.01.2024
Сообщений: 5,991
06.04.2026, 19:00
Цитата Сообщение от Curry Посмотреть сообщение
А лямбда функция это функция определяемая в месте вызова.
Как то фраза странно звучит.
Лямбда функции - это просто анонимные функции, которые могут быть переданы как параметр и возвращены как результат
1
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
06.04.2026, 19:13
Цитата Сообщение от voraa Посмотреть сообщение
Как то фраза странно звучит.
ладно, пусть будет "Лямбда функция это функция определяемая в месте применения".
0
 Аватар для voraa
1299 / 1290 / 191
Регистрация: 21.01.2024
Сообщений: 5,991
06.04.2026, 19:23
Цитата Сообщение от Curry Посмотреть сообщение
определяемая в месте применения
Что такое "применение" функции? Вызов?
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
06.04.2026, 19:58
Цитата Сообщение от voraa Посмотреть сообщение
Что такое "применение" функции? Вызов?
Может вызов, может присваивание значения лямбды переменной, полю структуры, возврат лябды по return.
0
7 / 11 / 2
Регистрация: 21.10.2023
Сообщений: 209
16.04.2026, 21:42
Однозначно, ассемблер. В конечном итоге, всё что запускается на компьютере исполняется процессором на его опкодах.
Из ассемблеров лучший - FASM. Для недовольных - NASM и TASM. MASM - д..мо от микрософта. ИМХО.
0
16.04.2026, 21:55

Не по теме:

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

0
 Аватар для voraa
1299 / 1290 / 191
Регистрация: 21.01.2024
Сообщений: 5,991
16.04.2026, 22:13
Цитата Сообщение от Elijah Tomcat Посмотреть сообщение
Однозначно, ассемблер.
Прога будет работать и на интелах и на армах?
0
7 / 11 / 2
Регистрация: 21.10.2023
Сообщений: 209
16.04.2026, 23:31
Royal_X,
Вообще-то тема - "Какой язык программирования лучше"!
0
46 / 124 / 11
Регистрация: 24.04.2019
Сообщений: 916
17.04.2026, 10:29
Elijah Tomcat, нет однозначно лучшего языка. Есть задачи и есть языки программирования для решения этих задач. Для какой-то задачи больше подходит С, для какой-то С++, а для какой-то ассемблер и т. д. Сравнивать разные языки в контексте "какой язык программирования лучше" некорректно.
0
 Аватар для Enifan
1853 / 1201 / 502
Регистрация: 14.10.2018
Сообщений: 3,337
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
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru