Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/75: Рейтинг темы: голосов - 75, средняя оценка - 4.92
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14

Почему мы все еще программируем на древних языках?

05.06.2021, 12:39. Показов 15962. Ответов 166
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На каком-то другом форуме я читал, что Microsoft не обновляет свою ОС. Пишут, что новая ОС - это Windows 11, Windows 12 и т. д., а Windows 10 устарела, и все эти "крупные" обновления - это болтовня. А ей еще и десяти лет нет! И в то же самое время в языках программирования картина кардинально другая: активно программируют на Жабе, которой 30 лет, на плюсах, которым 40 лет, на Си, которому 50 лет! И не выйдет же какой-нибудь C++II с кортежно-ориентированным программированием, с интегрированными управляемыми ссылками (а не со сплошными припонами, как C++/CLI), с конструкциями вида x is string s + "o" + s! Это я фантазирую, но с чем-то действительно НОВЫМ, что влияло бы на программирование СУЩЕСТВЕННО, а не как эти бесконечные C++11/14/17/20/... . Но нет, так и остается высокоуровневым ассемблером. Самый новый на сегодняшний день язык - это Шарп, которому чуть больше 20 лет (говно в стиле Dart и Go не в счет). Ну, а когда-то каждые 10 лет выходили не то что передовые языки, а новые парадигмы! И это не "трава была зеленее", а известный факт. Могу даже предоставить названия этих парадигм. Ну неужели всем настолько тупо лень сделать мир хоть на 0.000001% лучше, улучшить хоть одну его область, сделать хоть что-то НОВОЕ, а не по кругу Шарп-Жаба-Пайсен-плюсы-ПрочееГовно? Неужели я один во всем мире стремлюсь к прекрасному и сею разумное, доброе, (ну, слово "вечное" тут неприменимо)? Или, может, у меня извращенные представления об этом "прекрасном"? И у меня нет приступа острого NIH, я с радостью буду пользоваться НОВЫМ языком, если его разработает кто-то другой. Даже если он будет слегка отличаться от придуманного мной C# .NStar, например, слово Function будет писаться с маленькой буквы или вместо [TKey, TValue] будет <TKey, TValue>. Но нет, всем плевать. Вот я и спрашиваю - это всемирный заговор против программистов или это я один хочу не знать чего? А мне кажется, что ничего сверхъестественного я не прошу. Прошу ответить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2021, 12:39
Ответы с готовыми решениями:

Если с CMS все так просто, то почему сайты все еще делают в блокнотах?
Я вот примерно месяц уже занимаюсь изучением html, css и php, и узнал что еще можно создавать сайты с помощью wordpress и joomla, так вот,...

Почему в 2017 году всё ещё нет компилятора C# в нативный код?
Этому есть какие-нибудь объективные причины? В нём есть то, что машинными кодами реализовать невозможно? Или С# по спецификации обязан...

Почему в языках C# и Java методы статические, а в других - нет
Почему в языках C# и Java методы статические (например, в C# - Console.WriteLine()), а в других - не статические (например, в C++ -...

166
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
27.08.2021, 13:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Катафалк Посмотреть сообщение
Это не вы разве рассказывали, что си с гото - единственный достойный существования язык?
Не я. Я говорил, что надо начинать с Си. Да, у меня свои тараканы, как и у ТС свои собственные. Я не принимаю его точку зрения, что массивы и goto устарели. Только и всего. Вы просто не умеете их готовить. Мне реально сложно читать код с нагромождениями вложенных if/else. Это намного хуже, чем goto. Goto идет на конкретный индтификатор-метку, а if/else не имеет имени - здесь нужно листинг кода препарировать, да не по одному разу, чтобы что-то там понять. Поэтому тема спорная..
Насчет массивов.
Где-то рулят массивы, где-то списки, но все упирается в скорость. Все пляшут от этого. А скорость обыкновенного массива достаточна, чтобы обходится без списков/кортежей/деревьев и пр. Это опять мои тараканы.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,733
27.08.2021, 13:49
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я говорил, что надо начинать с Си.
Но не сказали почему. Чем этот язык поучительнее других. Того же паскаля или Java.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А скорость обыкновенного массива достаточна, чтобы обходится без списков/кортежей/деревьев и пр.
Да, это точно тараканы вам такое сказали. Не слушайте их. Лучше на практике проверьте.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
27.08.2021, 16:45
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Мне реально сложно читать код с нагромождениями вложенных if/else.
Мне тоже. Но существуют более читабельные методы избавления от такого нагромождения.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Где-то рулят массивы, где-то списки, но все упирается в скорость.
Исторически сложилась некоторая терминологическая путаница.
1. Список - способ хранения в памяти однотипных данных (альтернатива массиву).
2. Список - абстрактный тип данных (есть несколько вариантов)
3. Список - конкретная реализация абстрактного типа данных из пункта 2 (то есть, тип данных)
4. Список - экземпляр типа данных из пункта 3

Если речь идёт об алгоритме, то мы говорим о пункте 2.
В этом случае обычно у Массива нет никаких преимуществ перед Списком. По сути Массив - это Список с фиксированным количеством элементов. Массив можно держать в стеке. Некоторые допотопные WinAPI использовали структуры с фиксированным массивом в качестве одного из полей. Обе ситуации можно рассматривать как попытку отобрать хлеб у компилятора, а не как потребности какого-нибудь алгоритма.

Если речь идёт о скорости, то мы говорим о пункте 3. И реализацию будем выбирать в зависимости от того, какие требования к каким операциям. Иногда лучше Список на основе "списка" (пункт 1), иногда лучше Список на основе "массива" (пункт 1). А иногда лучше реализация на основе комбинации этих подходов (например, как Вектор из Clojure).

Использование "сырых" массивов (в значении из пункта 1) практически не даёт выигрыша в производительности (по сравнению со Списком на основе "массива").
Никто не мешает компилятору использовать массивы для оптимизации. Например, самый быстрый способ отсортировать связный список - это перегнать его в массив, воспользоваться быстрой сортировкой, перегнать обратно в список. Но пусть это остаётся "за кадром".
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
28.08.2021, 14:17
Цитата Сообщение от Usaga Посмотреть сообщение
Но не сказали почему. Чем этот язык поучительнее других. Того же паскаля или Java.
Неужели не понятно отличие Си от джавы? Это разные миры, которые никак не пересекаются. Контролеры вы тоже на джаве программировать будете? Почему? Да потому, чтобы понимать как устроена машина, иначе придется постоянно обращаться к автосервису.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Но существуют более читабельные методы избавления от такого нагромождения.
Отделение кода отступами? Самое яркое извращение, к которому все привыкли.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Массив можно держать в стеке.
Можно, но не следует. Для этого есть куча или статическая память. Это из си. Джависты с шарпистами не поймут...
Цитата Сообщение от Usaga Посмотреть сообщение
Лучше на практике проверьте.
Надоть так надоть
Цитата Сообщение от Shamil1 Посмотреть сообщение
В этом случае обычно у Массива нет никаких преимуществ перед Списком.
Единственный недостаток массива из последовательных ячеек памяти это возможный сдвиг массива вправо при удалении первого элемента, если массив используется как список. Я имел в виду список как динамическую структуру данных, которая реализуется посредством ссылок-указателей. Но если помечать в массиве элементы как удаленные, а потом, через энное количество времени одним махом удалять все помеченные как удаленные элементы, то скорость работы может быть выше или сравнима с удалением из ссылочного списка.
0
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
28.08.2021, 15:29
Цитата Сообщение от Etien Посмотреть сообщение
Где может быть прорыв?
дать напровления прорыва? что мне за это будет?
Цитата Сообщение от Etien Посмотреть сообщение
Какая-то подвижка произошла с Объектно Ориентированным Программированием
не подвижка, а задвижка
Цитата Сообщение от Etien Посмотреть сообщение
на каком-то языке программирования сети
эмммммммммммм не знал что ипв4 это язык программирования, буду указывать в резюме
Цитата Сообщение от Etien Посмотреть сообщение
Возможно идеология квантовых компьютеров.
так и вижу красных роботов вместо глаз у которых "слава кпсс", серьёзно идеология у компов?
Цитата Сообщение от Usaga Посмотреть сообщение
А чем вас существующие языки не устраивают? Те же C++
очевидно же: убогой реализацией переменных, ну сколько можно ездить на одних и тех же граблях (вот я смог это решить (через жопу) почему ты не можешешь?) у переменных может быть тока три типа - строка, число, массив (всё иное лишнее)
Цитата Сообщение от Usaga Посмотреть сообщение
смена языка
есть вероятность, что исправит... ты видел таблицы в луа? прелесть... какой подход к массивам...
Цитата Сообщение от Usaga Посмотреть сообщение
жаловаться на язык.
ну да... буду жаловаться, что я пишу на русском... хотя все плюшки инглишменам раздают...
Цитата Сообщение от Катафалк Посмотреть сообщение
захвачено говнокодерами разных мастей
не удивлюсь если тебя забанят DDDD
Цитата Сообщение от Катафалк Посмотреть сообщение
концепция "текстовых" языков программирования безнадежно устарела,
вот до этой фразы аплодировал стоя, но диалоговые яп? бред... тогда уж не диалоговые, а семантические (нужно же понять какой бред нужно создать юзеру)
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
28.08.2021, 15:44
Цитата Сообщение от user-ganz Посмотреть сообщение
вот до этой фразы аплодировал стоя, но диалоговые яп? бред... тогда уж не диалоговые, а семантические (нужно же понять какой бред нужно создать юзеру)
Не диалоговые, а интеллектуальные диалоговые. И не ЯП, а системы разработки ПО. Почувствуйте разницу
0
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
28.08.2021, 15:50
Цитата Сообщение от Катафалк Посмотреть сообщение
а интеллектуальные диалоговые.
не называй умными словами элементарные вещи.
ты имел ввиду шаблон составления программы?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
28.08.2021, 15:57
Цитата Сообщение от user-ganz Посмотреть сообщение
ты имел ввиду шаблон составления программы?
Нет
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
28.08.2021, 20:37
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Отделение кода отступами?
Нет. Именно избавления.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Можно, но не следует.
Вот видите. А ведь это почти единственная ситуация, когда массив нельзя заменить списком без потери производительности. Зачем тогда использовать массивы?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Единственный недостаток массива из последовательных ячеек памяти
Основной недостаток массива в том, что это низкоуровневое понятие. При работе с массивом программист должен запоминать его размер, следить за тем, чтобы не выйти за границы массива, писать специальный код для изменения размера массива и т.д.То есть, каждый раз заново решать все эти технические детали. Лучше решить их один раз (создать тип данных Список) а дальше думать о самом алгоритме.
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
29.08.2021, 08:16
Цитата Сообщение от user-ganz Посмотреть сообщение
у переменных может быть тока три типа - строка, число, массив (всё иное лишнее)
Не лишнее. Еще функция, логический и пользовательский.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
29.08.2021, 14:02
Цитата Сообщение от Shamil1 Посмотреть сообщение
Зачем тогда использовать массивы?
Для увеличения производительности.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Лучше решить их один раз (создать тип данных Список) а дальше думать о самом алгоритме.
То есть универсальное решение для всех возможных ситуаций? Не глупо?
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
29.08.2021, 15:22
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Для увеличения производительности.
Массивы не дают увеличения производительности (за редким исключением).

Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть универсальное решение для всех возможных ситуаций? Не глупо?
Это называется "повторное использование кода". Нет, не глупо. Вы используете функцию printfn (универсальное решение для всех случаев) или каждый раз заново пишите?
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,733
30.08.2021, 07:26
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Неужели не понятно отличие Си от джавы? Это разные миры, которые никак не пересекаются. Контролеры вы тоже на джаве программировать будете? Почему? Да потому, чтобы понимать как устроена машина, иначе придется постоянно обращаться к автосервису.
Я спросил конкретно о том, почему на Си лучше программирование изучать. Пока аргументов не прозвучало. Контроллеры каким боком тут вылезли? Как устроена машина на Java не изучить?

Добавлено через 1 минуту
Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть универсальное решение для всех возможных ситуаций? Не глупо?
Глупо, это каждый раз с нуля писать одно и тоже. Вы, чтобы гвоздь забить, каждый раз молоток с нуля изобретаете? Или, всё же, готовый берёте?
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
30.08.2021, 13:18
Цитата Сообщение от Usaga Посмотреть сообщение
Я спросил конкретно о том, почему на Си лучше программирование изучать.
Потому что среди ПРОФИ, настоящих, а не дутых, на вроде некоторых местных товарищей, си считается эсперанто программирования, который должен знать КАЖДЫЙ программист, если он считает себя программистом. Именно на этом языке удобнее всего демонстрировать работу любого алгоритма. Это даже не я так считаю, а наиболее продвинутые ученые-программисты.
Цитата Сообщение от Usaga Посмотреть сообщение
Глупо, это каждый раз с нуля писать одно и тоже.
Зачем писать? Массивы уже готовый инструмент. Насчет link-list, то - да, надо каждый раз, да не писать, а пользоваться готовыми наработками.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
30.08.2021, 13:43
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это даже не я так считаю, а наиболее продвинутые ученые-программисты.
Хотелось бы увидеть подтверждение. Насколько мне известно, наиболее продвинутые ученые-программисты предпочитают демонстрировать алгоритмы на псевдокоде.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Зачем писать? Массивы уже готовый инструмент.
Коллекции данных обычно приходят извне (ввод пользователя, файлы, базы данных и т.д.). На момент компиляции их размер неизвестен. Я даже затрудняюсь так сразу вспомнить пример программы или алгоритма, где размер коллекции известен заранее. Ну, кроме, задания буфера для допотопных программных интерфейсов, разработанных 30 лет тому назад для машин с 1Мб памяти.

Итого, перед Вами стоит задача - запомнить (сохранить в памяти) некую внешнюю коллекцию с заранее неизвестным количеством элементов. Как Вы её выполните с помощью массивов? Можно каждый раз писать дополнительный код. А можно один раз написать и далее использовать Список (реализация на основе массива). Например, List<T> в C#.

То же самое, но ещё в большей степени (из-за зоопарка кодировок), относится к строкам. Вспомните, хотя бы, всю убогость использования sprintf(). Ей нужно передать буффер под возвращаемый результат, но какого размера будет результат - неизвестно. Передавать слишком много - разбазаривание ресурсов, передавать слишком мало - получим ошибку времени исполнения, которую нужно обработать.
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
 
int main(void) {
    // your code goes here
    char str[2];
    sprintf(str, "Value of Pi = %f", 3.14);
    
    puts(str);
    
    return 0;
}
https://ideone.com/x8F695
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
30.08.2021, 13:56
Цитата Сообщение от Shamil1 Посмотреть сообщение
Как Вы её выполните с помощью массивов?
С легкостью.

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
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
int main()
{
  int *a;  // указатель на массив
  int i, n;
  system("chcp 1251");
  system("cls");
  printf("Введите размер массива: ");
  scanf("%d", &n);
  // Выделение памяти
  a = (int*)malloc(n * sizeof(int));
  // Ввод элементов массива
  for (i = 0; i<n; i++)
  {
    printf("a[%d] = ", i);
    scanf("%d", &a[i]);
  }
  // Вывод элементов массива
  for (i = 0; i<n; i++)
    printf("%d ", a[i]);
  free(a);
  getchar();
  return 0;
}
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
30.08.2021, 14:29
Цитата Сообщение от vantfiles Посмотреть сообщение
С легкостью.
Так просто не получится, потому что в общем случае пользователь не может ввести размер массива.

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

Переделайте свой пример для ввода строки (например, имени пользователя). Сколько дополнительного кода придётся написать?

Проблема, конечно, решаема. Как я писал выше - можно каждый раз писать дополнительный код. А можно вместо массива использовать готовый код (абстракции более высокого уровня):
C++
1
2
3
4
string fullName;
cout << "Type your full name: ";
getline (cin, fullName);
cout << "Your name is: " << fullName;
Другой пример:
Нам нужен список членов группы Администратор. Мы вызываем функцию винапи, передавая нулевую ссылку. Она возвращает размер ответа. Мы создаём массив нужного размера и вызываем ту же функцию ещё раз, передавая ссылку на массив, чтобы она вернула результат. Опять лишний код. Потому что используем "сырой" массив.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
30.08.2021, 16:22
Цитата Сообщение от Shamil1 Посмотреть сообщение
Хотелось бы увидеть подтверждение.
Навскидку, помимо отцов основателей Дениса Ритчи и Кернигана - Линус Торвальдс, Джоэл Спольски, Ричард Столлман и многие многие другие.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Коллекции данных обычно приходят извне (ввод пользователя, файлы, базы данных и т.д.). На момент компиляции их размер неизвестен. Я даже затрудняюсь так сразу вспомнить пример программы или алгоритма, где размер коллекции известен заранее. Ну, кроме, задания буфера для допотопных программных интерфейсов, разработанных 30 лет тому назад для машин с 1Мб памяти.
Нынешние программисты стали настолько ленивы, что не хотят анализировать прежде чем тыкать пальцем по клаве. Вам дай готовый универсальный инструмент и все, дело в шляпе. Вернее ваша программа будет часто оказываться в шляпе. А раньше при 1 мг. памяти люди умели анализировать и проектировать, и знали о переполнении всё. А сейчас думают, что у пользователей целый вагон памяти. Но у тех пользователей есть целый вагон приложений, которые эту память быстро съедают, и вам, вашему универсальному поглотителю памяти там может просто не оказаться места.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Итого, перед Вами стоит задача - запомнить (сохранить в памяти) некую внешнюю коллекцию с заранее неизвестным количеством элементов. Как Вы её выполните с помощью массивов?
То есть по вашему выходит, что коллекция в принципе может иметь неограниченное количество элементов, ну, допусти в квинтиллион элементов? Или ни одного? То есть опять не хотим анализировать? А простейший анализ показывает, что таких коллекций, допустим, быть не может в принципе. Потому что природа управляется законами, которые всегда подчеркиваю - всегда ограничивают чью-то свободу. И память у ЭВМ ограниченна аппаратурой. И вот, у вас уже есть показатель: память гипотетической пользовательской машины. А у среднего пользователя допустим ОЗУ имеет средний показатель в 4 гигабайта. А из этих 4 мы можем использовать от силы в 4 раза меньше, чтобы оставить пользователю возможность общаться с его ОС. И вот у нас уже 1 гиг памяти а не квинтиллион. Теперь мы можем обрабатывать вашу коллекцию в квинтиллион элементов запихивая её в 1 гиг частями. Это называется буферизацией, которая была известна еще в эпоху динозавров программирования.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,733
30.08.2021, 17:18
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Потому что среди ПРОФИ, настоящих, а не дутых, на вроде некоторых местных товарищей, си считается эсперанто программирования, который должен знать КАЖДЫЙ программист, если он считает себя программистом. Именно на этом языке удобнее всего демонстрировать работу любого алгоритма. Это даже не я так считаю, а наиболее продвинутые ученые-программисты.
Ещё раз спрашиваю: в чём Си учебнее и лучше других языков?
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
30.08.2021, 17:42
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Навскидку, помимо отцов основателей Дениса Ритчи и Кернигана - Линус Торвальдс, Джоэл Спольски, Ричард Столлман и многие многие другие.
Не имена, а именно подтверждение Вашей мысли. Например, список наиболее популярных учебников по алгоритмам, в котором отмечены те, где примеры кода на Си. Или, хотя бы, примеры учебников по алгоритмам, с кодом на Си (хотя это не подтверждение).

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А раньше при 1 мг. памяти люди умели анализировать и проектировать, и знали о переполнении всё. А сейчас думают, что у пользователей целый вагон памяти.
Во-первых, это повторное использование кода - это правильно, независимо от количества памяти. То, что раньше каждый изобретал свой велосипед - не является доводом в пользу использования Си.
Во-вторых, как видно из примера, в данном случае стандартный Си подход (выделить буфер по-больше и надеяться, что его хватит) является более затратный по памяти.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть по вашему выходит, что коллекция в принципе может иметь неограниченное количество элементов, ну, допусти в квинтиллион элементов? Или ни одного? То есть опять не хотим анализировать?
Ну причём здесь квантилион? 10 или 100 или 1000, но на момент компиляции мы не знаем, сколько. Вы путаете анализ и написание велосипедов. Пользователь вводит имя - какой тут анализ? Загуглить и узнать, что самое длинное имя состоит из 1478 букв? А если завтра кому-то дадут более длинное имя? А если какой-нибудь шутник введёт вместо имени текст романа "Война и мир"?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
теперь мы можем обрабатывать вашу коллекцию в квинтиллион элементов запихивая её в 1 гиг частями.
Есть ограниченное количество способов решения проблемы ввода неизвестного размера. Зачем каждый раз заново изобретать велосипед? Кто будет платить за это (бесполезное по сути) времяпрепровождение? Или всё-таки выбрать подходящее из готовых решений?

Мне один раз понадобилась "строка с буферизацией", когда я писал обработчик (включая парсер) для сообщений, которые не умещаются в переменную типа string из-за ограничений ОС. И даже в такой ситуации я написал модуль, а далее использовал его и не парился, какой там длины сообщения. Что уж говорить о задачах, с которыми сталкиваешься чуть ли не в каждом проекте? Каждый раз писать код для работы с массивами или один раз написать модуль?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.08.2021, 17:42

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

Загрузка с SATA-HDD в древних BIOS
дано: древний комп с древним BIOS, в котором варианты загрузки только: HDD / CD-Rom / Floppy на этом древнем компе, разумеется, только...

Установка древних браузеров под вин8
возникла необходимость установки древних браузеров(конкретнее ie7-8) под сея ось, для тестирования сайтов* виртуалка не рассматривается...

Подключить 2 древних стереоусилителя к одному выходу с материнской платы
Есть Вега и Пионер 80-годов, две пары колонок в разных помещениях и старый компьютер со встроенным звуком (Asus P4P800 ). Хочу впаяться в...

Требуется человек с опытом написания на этих языках, знающий все от и до
доброго времени! ищу онлайн учителя по PHP и JavaScript.Требуется человек с опытом написания на этих языках,знающий все от и до....Мои...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru