Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/70: Рейтинг темы: голосов - 70, средняя оценка - 4.63
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

Язык программирования для Backend

26.06.2019, 16:40. Показов 18780. Ответов 297
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Халивар неизбежен, однако, мне следует задать этот вопрос.
Что сейчас лучше использовать для Backend?
Конкретнее:
1) Из того, что востребовано;
2) Из того, с чем будет проще разработка крупных проектов, включая разработку API;
3) Не JS.
Прошу конкретизировать вашу позицию.
Всем спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.06.2019, 16:40
Ответы с готовыми решениями:

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

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

Язык программирования Яр
Разрабатываю полностью русскоязычный язык программирования для профессионального применения (не учебный). Основные достоинства: -...

297
Эксперт .NET
 Аватар для Usaga
14345 / 9448 / 1360
Регистрация: 21.01.2016
Сообщений: 35,620
09.07.2019, 11:46
Студворк — интернет-сервис помощи студентам
Fulcrum_013, ЧЯДНТ?

Кликните здесь для просмотра всего текста

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace ConsoleApp2
{
    [Serializable]
    public class SomeData
    {
        public int IntProp { get; set; }
 
        public int IntField;
    }
 
    class Program
    {
        public static void Main(string[] args)
        {
            var someData = new SomeData
            {
                IntProp = 1,
                IntField = 2
            };
 
            SomeData someOtherData = null;
 
            var formatter = new BinaryFormatter();
 
            byte[] buffer = null;
 
            using (var mem = new MemoryStream())
            {
                formatter.Serialize(mem, someData);
 
                buffer = mem.ToArray();
            }
 
            using (var mem = new MemoryStream(buffer))
            {
                someOtherData = formatter.Deserialize(mem) as SomeData;
            }
 
            Debug.Assert(someData.IntProp == someOtherData.IntProp); // TRUE
            Debug.Assert(someData.IntField == someOtherData.IntField); // TRUE
 
            Console.WriteLine("Done");
        }
    }
}


Добавлено через 3 минуты
Вариант с членами-объектами тоже работает, почему-то:
Кликните здесь для просмотра всего текста

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace ConsoleApp2
{
    [Serializable]
    public class SomeData
    {
        public int IntProp { get; set; }
 
        public int IntField;
 
        public NestedData NestedDataProp { get; set; }
 
        public NestedData NestedDataField;
    }
 
    [Serializable]
    public class NestedData
    {
        public int InnerData { get; set; }
    }
 
    class Program
    {
        public static void Main(string[] args)
        {
            var someData = new SomeData
            {
                IntProp = 1,
                IntField = 2,
                NestedDataProp = new NestedData
                {
                    InnerData = 3
                },
                NestedDataField = new NestedData
                {
                    InnerData = 4
                }
            };
 
            SomeData someOtherData = null;
 
            var formatter = new BinaryFormatter();
 
            byte[] buffer = null;
 
            using (var mem = new MemoryStream())
            {
                formatter.Serialize(mem, someData);
 
                buffer = mem.ToArray();
            }
 
            using (var mem = new MemoryStream(buffer))
            {
                someOtherData = formatter.Deserialize(mem) as SomeData;
            }
 
            Debug.Assert(someData.IntProp == someOtherData.IntProp); // TRUE
            Debug.Assert(someData.IntField == someOtherData.IntField); // TRUE
            Debug.Assert(someData.NestedDataProp.InnerData == someOtherData.NestedDataProp.InnerData); // TRUE
            Debug.Assert(someData.NestedDataField.InnerData == someOtherData.NestedDataField.InnerData); // TRUE
 
            Console.WriteLine("Done");
        }
    }
}


Что это?
0
 Аватар для zeroalef
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
09.07.2019, 14:11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну дак раскладка чем ФП от машины Тюринга отличается будет или мне вам это разложить?
Какой смысл? Вы же непробиваемый броневик. С таким же успехом я могу учить свою собаку читать, но она все равно понимает только игру в мяч. ФП не может отличаться от машины Тьюринга, т.к. это абстракции разных уровней. Но вам такие банальности понять судя по всему так и не удастся. Удачи я вам не желаю, но беседу хочу прекратить на теплой ноте.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
09.07.2019, 14:47
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
применимость той или иной либы в рамках конкретной задачи нужно сначала математически доказывать
Не знаю, как вы доказываете применимость либ в своей программистской деятельности, но если так же, как на этом форуме, то соболезную вашим заказчикам и их выброшенным на ветер деньгам.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот при помощи функции автомат описать нельзя, при ее помощи можно описать только переход автомата из одного состояния в другое.
Что такое описание автомата при помощи функции, зачем это надо и как из этого следует то, что ФП - болото?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну дак раскладка чем ФП от машины Тюринга отличается будет или мне вам это разложить?
Разложите, будьте добры. Чтобы совсем уж треплом не быть.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
09.07.2019, 17:45
Цитата Сообщение от Катафалк Посмотреть сообщение
Разложите, будьте добры. Чтобы совсем уж треплом не быть.
Вам уже это написали.

Добавлено через 56 секунд
Цитата Сообщение от Катафалк Посмотреть сообщение
Что такое описание автомата при помощи функции,
Автомат при помощи функции не описывается в том то и дело.

Добавлено через 3 минуты
Цитата Сообщение от Катафалк Посмотреть сообщение
зачем это надо и как из этого следует то, что ФП - болото?
Надо это для взаимодействия с внешним миром. Т.е. для запроса данных в диалоговом режиме, когда какие именно данные запросить вычисляется программой а не все данные пачкой передаются на вход функции.
0
 Аватар для zeroalef
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
09.07.2019, 18:08
Я же говорю, броневик. То что любой студент описывает автоматы именно с помощью логических функций -- ерунда. Автоматы функциями не описать! И точка. ФП не умеет во внешний мир и точка, это же непокобелимая истина и только младенцы этого не знают. Вот нету в ФП I/O, разве это еще надо кому-то объяснять?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
09.07.2019, 18:12
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Автомат при помощи функции не описывается в том то и дело.
Скажите честно, вы математику в последний раз по букварю в детском саду изучали и совершенно не в курсе, что такое математическое доказательство?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
09.07.2019, 20:12
Цитата Сообщение от zeroalef Посмотреть сообщение
То что любой студент описывает автоматы именно с помощью логических функций -- ерунда
Учебник млин откройте. С помощью набора функций перехода. А не с помощью одной функции-монстра.
0
 Аватар для zeroalef
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
09.07.2019, 20:44
Лололо, типа это в корне всё меняет. Словили леща? Хотя бы выдержите его с достоинством. А еще загляните в тот же учебник и почитайте что такое композиция. И когда один переход задается функцией https://www.cyberforum.ru/cgi-bin/latex.cgi?\psi_{k} \(x_{n},...,x_{0}\) То весь автомат -- функцией https://www.cyberforum.ru/cgi-bin/latex.cgi?\Psi  \(\psi_{1},...,\psi_{m}\).

Добавлено через 3 минуты
А теперь включите свою гениальность и по тому же принципу скомпонуйте набор автоматов.

Добавлено через 41 секунду
Fulcrum_013,
0
Модератор
 Аватар для Curry
5162 / 3511 / 536
Регистрация: 01.06.2013
Сообщений: 7,628
Записей в блоге: 9
09.07.2019, 20:54
Цитата Сообщение от Usaga Посмотреть сообщение
Судя по всему, там чисто компоненты для Qt. Т.е. оно не общего назначения.
А в nuget почти все пакеты для .NET, а пакетов для Qt вообще нет, значит он тоже не общего применения.
А пакетные менеджеры OCaml-а (opam), Haskell-a (stack) и node.js (npm) содержат пакеты соответственно для Ocaml, Haskell и node.js, не хотят быть общего назначения.
Цитата Сообщение от Usaga Посмотреть сообщение
Наличие менеджера пакетов как раз следствие управляемой природы языка.
А может следствие сишного синтаксиса, к примеру? А если бы был паскалевский или ещё какой, вот тогда, бы, конечно, менеджер пакетов никак бы не вышел.
Я не понимаю, как вы к такому выводу пришли. Он опровергается, хотя бы, наличием примерно такого же менеджера пакетов в делфи/билдере.
Сейчас во всех современных языках и средствах разработки менеджеры пакетов.
Цитата Сообщение от Usaga Посмотреть сообщение
Почему так просто в сравнении с DLL на Си\С++? Потому, что все метаданные уже зашиты в DLL и никакой дополнительной информации в виде *.H файлов, OBJ-файлов и линкований не надо.
Это внутреннее дело менеджера пакетов, откуда он инфу будет брать - из исходников, или из dll, или ещё из чего.
Хотя, возможно, из за этого подхода в nuget нет возможности выбирать и сортировать пакеты по множеству параметров (я ранее на это указывал).
Цитата Сообщение от Usaga Посмотреть сообщение
Сам С++ не позволяет всё так просто организовать. Иначе давно бы уже прикрутили подобное и не парились бы.
Давно прикрутили в билдере, Qt и пр. и не парятся.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
09.07.2019, 23:36
Цитата Сообщение от Usaga Посмотреть сообщение
Один ключ и путь к DLL. И то за вас пакетным менеджером сотворяется. Почему так просто в сравнении с DLL на Си\С++?
Примеры пакетных менеджеров для C/C++ и всякого разного: apt, yum, emerge, pacman, apk, pkg, homebrew,.. Десятки их. Ну, Windows как всегда…
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
10.07.2019, 07:08
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Учебник млин откройте. С помощью набора функций перехода. А не с помощью одной функции-монстра.
Не знаю, что вы имеете в виду под описанием автомата функцией, а сами выражаетесь так и вообще делаете все, чтобы вас никто не понял. Но банальных факт, известный любому студенту программерской специальности гласит, что класс функций, вычислимых на МТ и, например, в лямбда-исчислении - равны. Тобишь, МТ прекрасно моделируется функциями лямбда исчисления и наоборот.
0
Эксперт .NET
 Аватар для Usaga
14345 / 9448 / 1360
Регистрация: 21.01.2016
Сообщений: 35,620
10.07.2019, 07:33
Цитата Сообщение от korvin_ Посмотреть сообщение
Примеры пакетных менеджеров для C/C++ и всякого разного: apt, yum, emerge, pacman, apk, pkg, homebrew,.. Десятки их. Ну, Windows как всегда…
Это просто пакетные менеджеры общего назначения, а не "пакетные менеджеры для С++". Для Windows тоже такая штука есть - chocolatey. К С++ он, как и перечисленные вами, отношения не имеет.

Цитата Сообщение от Curry Посмотреть сообщение
А в nuget почти все пакеты для .NET, а пакетов для Qt вообще нет, значит он тоже не общего применения.
Под общим назначением понимается наличие пакетов любой направленности: от архиваторов и вспомогательных классов-контейнеров, до ORM и фреймворков. В случае с Qpm у них на сайте крупным текстом сказано:
Find awesome Qt and QtQuick components to include in your project.
Т.е. основная цель - UI-компоненты и только под Qt. А если я работаю с MFC или WxWidgets? А если мне libcurl надо для консольного приложения? Вот именно об этом я и говорил.

Цитата Сообщение от Curry Посмотреть сообщение
А может следствие сишного синтаксиса, к примеру? А если бы был паскалевский или ещё какой, вот тогда, бы, конечно, менеджер пакетов никак бы не вышел.
Я не понимаю, как вы к такому выводу пришли. Он опровергается, хотя бы, наличием примерно такого же менеджера пакетов в делфи/билдере.
Сейчас во всех современных языках и средствах разработки менеджеры пакетов.
Синтаксис языка вообще не причём. Речь о том, что в DLL помещается вся необходимая компилятору информация. И компилятор этот один, соответственно, формат этой информации всегда един. А теперь возьмите мир плюсов, где 100500 разных платформ и как минимум несколько разных компиляторов каждый со своими особенностиями. Вы попробуйте слинковать к приложению созданному на GCC статическую библиотеку на VC++, а потом скажите как у вас это замечательно вышло, как вам не помешал name mangling и прочие разные варианты соглашений по оформлению API. Для дельфей это возможно именно потому же, почему возможно и для .NET - один единственный вендор, который может делать что захочет.

Цитата Сообщение от Curry Посмотреть сообщение
Это внутреннее дело менеджера пакетов, откуда он инфу будет брать - из исходников, или из dll, или ещё из чего.
Хотя, возможно, из за этого подхода в nuget нет возможности выбирать и сортировать пакеты по множеству параметров (я ранее на это указывал).
Этот момент к пакетному мендеждеру вообще никак не относится. Речь о том, что чтобы подключить к проекту на .NET какую-то библиотеку, достаточно DLL-файла этой библиотеки, соответствия архитектуры (x86\x64) и совместимой целевой версии фреймворка и всё. Пакетный менеджер только выгружает эту DLL и добавляет Reference в проект. Не надо выгружать исходники библиотеки, искать в сети и выгружать исходники зависимостей этой библиотеки, настраивать систему сборки (которых разное количество, а не одна единственная), собирать это дело под конкретный процессор используя конкретный компилятор (GCC, LLVM, VC++, IntelC++ или иные), ибо их "выхлоп" не совместим между собой, не надо параметры линкования настраивать и порядок "подключаемых" библиотек.

Звучит немного сложнее, чем dotnet add package ..., не так ли?

Цитата Сообщение от Curry Посмотреть сообщение
Давно прикрутили в билдере, Qt и пр. и не парятся.
На это я ответил выше.
0
Модератор
 Аватар для Curry
5162 / 3511 / 536
Регистрация: 01.06.2013
Сообщений: 7,628
Записей в блоге: 9
10.07.2019, 11:15
Цитата Сообщение от Usaga Посмотреть сообщение
UI-компоненты и только под Qt. А если я работаю с MFC или WxWidgets?
Вы работаете с C# + MFC или WxWidgets? Вот, и с Qt c ними не работают.
Вы оспариваете возможность использования пакетных менеджеров на неуправляемых языках.
(Кстати, для ясности, я так понимаю, вы решили что для пакетного менеджера нужен язык который компилируется в промежуточный байт код? То есть GC тут не при чём? Много языков с GC компилируются в машинный код.)
Так вот, наличие пакетного менеджера и репозитория, скажем для Qt, разве ваш тезис не опровергает несмотря на неуниверсальность наполнения репозитория?
Цитата Сообщение от Usaga Посмотреть сообщение
Синтаксис языка вообще не причём.
Вы не поняли что это сарказм. Если вам так привычно показываю - . Разумеется, не при чём.
Цитата Сообщение от Usaga Посмотреть сообщение
Речь о том, что в DLL помещается вся необходимая компилятору информация. И компилятор этот один, соответственно, формат этой информации всегда един.
Ну cppbuilder тоже один, Qt тоже едино. И у каждого есть свои форматы для хранения дополнительной информации, и внутри DLL тоже.
Цитата Сообщение от Usaga Посмотреть сообщение
А теперь возьмите мир плюсов, где 100500 разных платформ и как минимум несколько разных компиляторов каждый со своими особенностиями.
Не спорю, это создаёт определённые проблемы, так же, как наличие, вообще, множества языков.
Но, нужно, повторяю, сравнивать сравнимое - у С# один компилятор, один пакетный менеджер, один репозиторий. Ну, и сравниваем с другим компилятором с предназначенным для него пакетным менеджером и репозиторием.
Например C# и cppbuilder. И в репозитории у обоих пакеты заточенные под них. А то что существуют библиотеки не заточенные под cppbuilder, ну так больше вероятности что их заточат, чем когда вообще кода нет. Если библиотека не привязана к VCL и кроссплатформенная, то её легко подцепить в исходниках к любой системе разработки на С++, иначе это плохая библиотека.
Проблема совместимости с другими библиотеками? А в пакетах nuget нет таких, которые работают с нативным кодом и/или его содержат?
Не вижу ничего плохого в пакетах в исходниках, какая разница как информация попадёт к пакетному менеджеру, из dll, или из исходников - это его дело. В любом случае, добавление пакета в проект, это одна команда или примерно одинаковые действия в гуе.
Но для этого должен, конечно, существовать репозиторий, в который кто то кладёт пакеты подпиленные для совместимости.
Просто сбор проекта из исходников разных библиотек, это те ещё танцы с бубнами, эти танцы особенно в linux любят, и, видимо, вы их танцевали.
То что в nuget много пакетов - это хорошо, конечно. Но, как я уже писал, это следствие развития языков с GC, в частности развитие .NET "самими MS", а не то что там байт код.
0
Эксперт .NET
 Аватар для Usaga
14345 / 9448 / 1360
Регистрация: 21.01.2016
Сообщений: 35,620
10.07.2019, 11:34
Цитата Сообщение от Curry Посмотреть сообщение
Вы работаете с C# + MFC или WxWidgets? Вот, и с Qt c ними не работают.
Вы оспариваете возможность использования пакетных менеджеров на неуправляемых языках.
(Кстати, для ясности, я так понимаю, вы решили что для пакетного менеджера нужен язык который компилируется в промежуточный байт код? То есть GC тут не при чём? Много языков с GC компилируются в машинный код.)
Так вот, наличие пакетного менеджера и репозитория, скажем для Qt, разве ваш тезис не опровергает несмотря на неуниверсальность наполнения репозитория?
Я не оспариваю. Я констатирую факт того, что С++ в том виде, в котором он есть сейчас, не позволяет заиметь такой пакетный менеджер. Что мы и имеем сейчас. Qt со своим Qpm вообще не показатель, он не общего назначения, как выше, вроде бы, разобрались. GC тут вообще не причём.

Цитата Сообщение от Curry Посмотреть сообщение
Ну cppbuilder тоже один, Qt тоже едино. И у каждого есть свои форматы для хранения дополнительной информации, и внутри DLL тоже.
Qt не является самостоятельным компилятором и даже не является платформой какой-то. Что Qpm в своём репозитории содержит? Компоненты на QML? Не сильно тянет на звание пакетного менеджера в том виде, в каком это есть в NuGet.

Цитата Сообщение от Curry Посмотреть сообщение
То что в nuget много пакетов - это хорошо, конечно. Но, как я уже писал, это следствие развития языков с GC, в частности развитие .NET "самими MS", а не то что там байт код.
Это следствие того, что DLL может быть собрана с ограниченным количеством "настроек", а именно архитектура и версия фреймворка и всё. И эта информация содержится в самой сборке, поэтому, если будет надо, компилятор может её прочитать. И сборки представлены строго в одном формате. В Java, к примеру, тоже самое. А теперь вспомните сколько разных ключей и ручек имеется в С++, которые можно подкрутить при сборке проекта. И чей компилятор правильнее? VC++ или GCC?

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

В общем, я хочу сказать, что пока мир С++ не сведётся к строго одному какому-то варианту, никаких пакетных менеджеров, кроме каких-то специализированных (Qpm) не будет. А он не сведётся потому, что бинарники НАТИВНЫЕ и отражают платформу на которой будут крутиться (заточенность под камень, принятые в ОС соглашения, форматы бинарников и прочее).

Было бы здорово, чтобы такой менеджер был. Но вот уже тридцать лет языку, а сподвижек толком нет.
0
Модератор
 Аватар для Curry
5162 / 3511 / 536
Регистрация: 01.06.2013
Сообщений: 7,628
Записей в блоге: 9
10.07.2019, 12:42
Цитата Сообщение от Usaga Посмотреть сообщение
Qt не является самостоятельным компилятором
Является. Мало того, qt - это, вообще не чистый С++, а с наворотами, реализуемыми предкомпилятором (по крайней мере в 2013г так было, когда я им пользовался).
Цитата Сообщение от Usaga Посмотреть сообщение
И эта информация содержится в самой сборке, поэтому, если будет надо, компилятор может её прочитать.
В любом пакете любых пакетных менеджеров находится дополнительная информация, она не обязана быть в dll.
Цитата Сообщение от Usaga Посмотреть сообщение
сколько разных ключей и ручек имеется в С++, которые можно подкрутить при сборке проекта.
Проект в виде пакета содержит всю конфигурацию этих "ручек" которая нужна для его сборки.
Цитата Сообщение от Usaga Посмотреть сообщение
Вот, если в мире останется только один компилятор С++ для одной платформы
А вот если в мире останется один язык программирования -
Цитата Сообщение от Usaga Посмотреть сообщение
А он не сведётся потому, что бинарники НАТИВНЫЕ и отражают платформу на которой будут крутиться (заточенность под камень, принятые в ОС соглашения, форматы бинарников и прочее)
Во первых, пакеты не обязаны быть в бинарниках, и тогда одни и те же исходники годятся для всех предусмотренных вариантов (условная компиляция). Во вторых, ещё раз повторяю, что для одного средства разработки на С++ это реализуемо и в бинарниках, сделанных для некоторого кол-ва архитектур, их не так уж много.
Сама зависимость от архитектуры и ОС разная, если пакет только для обработки данных, или использует только кросплатформенные библиотеки, то её может и не быть.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
10.07.2019, 13:11
Цитата Сообщение от zeroalef Посмотреть сообщение
И когда один переход задается функцией То весь автомат -- функцией .
Еще раз для самых одаренных - откройте учебник в конце концов и прочиайте что такое ФП. Оно подразумевает представление всей программы в виде f1(f2...fn( argы))) т.е. одной цепочки вызовов. Т.е. позволяет описать только одну функцию перехода из одного исходного состояния в одно конечное. В то время ка для автомат подразумевает набор состояний ифункций перехода между ними.
Надеюсь чем пара взаимодейсивующих автоматов которые ФП не позволяет создать лучше чем один эквивалентный обоим автомат объяснять не надо?
0
 Аватар для zeroalef
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
10.07.2019, 14:45
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
откройте учебник в конце концов и прочиайте что такое ФП
Прелюбопытнейшая история. Из какого учебника вы почерпнули определение? Можно ли считать что вообще существует каноническое определение? Подкрепите на этот раз свои доводы ссылками или авторами.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Т.е. позволяет описать только одну функцию перехода из одного исходного состояния в одно конечное.
манямирок, ага
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Надеюсь чем пара взаимодейсивующих автоматов которые ФП не позволяет создать лучше чем один эквивалентный обоим автомат объяснять не надо?
Ну вы и до этого момента не то чтобы особо, а вообще ничего объяснять не утруждались. Зачем же начинать? Вы же и так не отвечаете на вопросы, не аргументируете сфои пафосные абырвалг'и. Продолжайте в том же духе.

P.S. в следующий раз установки не тольковыделяйте жирным. Подчеркивание с капсом могут дать более надежный результат и убедить пару тройку идиотов в правоте вашего бреда.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
10.07.2019, 15:12
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Еще раз для самых одаренных - откройте учебник в конце концов и прочиайте что такое ФП. Оно подразумевает представление всей программы в виде f1(f2...fn( argы))) т.е. одной цепочки вызовов.
Приведите, пожалуйста, ссылку на конкретный учебник, в котором вы прочитали это определение ФП.
0
Эксперт .NET
 Аватар для Usaga
14345 / 9448 / 1360
Регистрация: 21.01.2016
Сообщений: 35,620
11.07.2019, 04:20
Цитата Сообщение от Curry Посмотреть сообщение
Является. Мало того, qt - это, вообще не чистый С++, а с наворотами, реализуемыми предкомпилятором (по крайней мере в 2013г так было, когда я им пользовался).
Добавление препроцессора своего не делает Qt компилятором.

Цитата Сообщение от Curry Посмотреть сообщение
В любом пакете любых пакетных менеджеров находится дополнительная информация, она не обязана быть в dll.
Для компилятора, который эту DLL будет использовать, обязана. Тот же Roslyn (C#) в душе не чает про NuGet и какая там у него информация есть.

Цитата Сообщение от Curry Посмотреть сообщение
Проект в виде пакета содержит всю конфигурацию этих "ручек" которая нужна для его сборки.
И не важно, что у каждого компилятора набор этих "ручек" разный? А зависимости этого пакета тоже в виде пакетов с исходниками тянутся? Их тоже собирать надо? Это, типа, удобнее пакета с готовыми бинарниками?

Цитата Сообщение от Curry Посмотреть сообщение
А вот если в мире останется один язык программирования
Речь о гипотетическом пакетном менеджере в С++ и условиях необходимых для его появления. Никто не говорит о том, что других языков остаться не должно.

Цитата Сообщение от Curry Посмотреть сообщение
Во первых, пакеты не обязаны быть в бинарниках, и тогда одни и те же исходники годятся для всех предусмотренных вариантов (условная компиляция). Во вторых, ещё раз повторяю, что для одного средства разработки на С++ это реализуемо и в бинарниках, сделанных для некоторого кол-ва архитектур, их не так уж много.
Сама зависимость от архитектуры и ОС разная, если пакет только для обработки данных, или использует только кросплатформенные библиотеки, то её может и не быть.
Пакеты с исходниками уже сейчас практикуются в мире линукса. Но полным аналогом NuGet-пакетов они ниразу от этого не становятся. Просто упрощается процесс выкачивания этих исходников. Геморр с настройкой проекта и его нафиг не нужной сборкой всё равно остаётся.

Ещё раз: просто скачать пакет и забыть не тоже самое, что скачать пакет и потом один фиг сидеть и собирать исходники из этого пакета. Это неудобно. Это затратно по времени. Избавиться от этого, судя по всему, можно только когда формат бинарника один единственный. Этому условию удовлетворяют C#, Java, Python и пакетные менеджеры у них есть. Нормальные, с пакетами на все случаи жизни, под любые платформы.

А сидеть всё пересобирать из исходников... Ну, согласитесь, что лишняя работа. Архаизм натуральный. Но в плюсах, видимо, от этого не получится избавиться.
0
Модератор
 Аватар для Curry
5162 / 3511 / 536
Регистрация: 01.06.2013
Сообщений: 7,628
Записей в блоге: 9
11.07.2019, 07:54
Цитата Сообщение от Usaga Посмотреть сообщение
Для компилятора, который эту DLL будет использовать, обязана. Тот же Roslyn
Если так сделано в Roslyn, это не значит что везде так должно быть.
Цитата Сообщение от Usaga Посмотреть сообщение
И не важно, что у каждого компилятора набор этих "ручек" разный?
... и ещё у разных версий компилятора. И для всех вариантов с которыми совместим пакет будут свои настройки.
Цитата Сообщение от Usaga Посмотреть сообщение
А зависимости этого пакета тоже в виде пакетов с исходниками тянутся? Их тоже собирать надо?
Для пакетов в исходниках да. Но, если все пакеты из одной репки, где их подогнали к друг другу, то всё это выполняется автоматически. Репки делаются для одного компилятор, системы сборки, ОС, архитектуры. Хотя, могут быть варианты.
Цитата Сообщение от Usaga Посмотреть сообщение
Речь о гипотетическом пакетном менеджере в С++ и условиях необходимых для его появления.
Они не гипотетические, а давно существуют, с вышеуказанными ограничениями.
Разумеется, для языков компилируемых в код VM отпадают зависимости от архитектуры и пр. И что, теперь, языки компилируемые в машинный код вообще не использовать?
Мне go совсем не понравился, но он относительно новый и набирает популярность (за счёт примитивности).
rust тоже потихоньку растёт (потихоньку, потому что не примитивный). Ну, то есть, не один я с вами не соглашусь, насчёт нативных языков.
Цитата Сообщение от Usaga Посмотреть сообщение
Пакеты с исходниками уже сейчас практикуются в мире линукса.
Они там с самого начала linux-а.
Цитата Сообщение от Usaga Посмотреть сообщение
Геморр с настройкой проекта и его нафиг не нужной сборкой всё равно остаётся.
Если всё из одной репки, то гемора нет. Гемор когда пытаемся прикрутить пакет не из той же репки откуда остальные.
Цитата Сообщение от Usaga Посмотреть сообщение
Избавиться от этого, судя по всему, можно только когда формат бинарника один единственный.
Только ваше предположение потому что вы к Roslyn-у привыкли.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2019, 07:54
Помогаю со студенческими работами здесь

Универсальный язык программирования
Видел много подобных тем у вас на форуме, но соседняя тема. "С чего начать?" мне не подходит. Год назад я программировал на Visual Basic...

Свой язык программирования
Если бы вы пришли к власти создали свой (безусловно, самый лучший) язык программирования, что бы вы в него включили? Понятно, что нужно...

мощный язык программирования
Часто слышу фразу "мощный язык" относительно C++, Java и некоторых других языков программирования. Интуитивно я примерно понимаю что это...

Самый худший язык программирования?
Какой, по-вашему мнению самый худший язык программирования и главное почему? Начну с себя. Самый ужасный javascript, из-за его...

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


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru