Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9

Динамически типизированные языки : один вред, никакой пользы

31.01.2016, 01:13. Показов 9439. Ответов 177
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я имею ввиду языки, в которых только или почти только используются динамически типизированные данных. Не будем сейчас рассматривать рефлексию, в языках .NET или java – там используются динамические типы, но используется сама рефлексия относительно редко.

Где ещё, якобы нужна динамическая типизация?

Для доступа к БД? Не нужна, если сама БД не написана на динамическом языке и/или не специально спроектирована для взаимодействия с динамическим языком. Если посмотреть API конкретных СУДБ (например, oracle, postgreSQL, Firebird/Interbase, SQLite) или ODBC API, то выяснится, что динамическая типизация не нужна.

Для JSON ? Нет, не нужна. Библиотеки для работы с JSON реализованы, наверное, для всех распространённых, статически типизированных языков.

Метапрограммирование? Смотря какое. Если под ним подразумевать выполнение строки кода введённого пользователем, то может оказаться и нужна. Только это для скриптов. При чём для скриптов без предкомпиляции (хотя бы в байт код). Сейчас 21 век, и код, даже на скрипте, должен вначале хотя бы парситься с проверкой типов весь, что бы не выгребать баги лопатой после жалоб пользователей (тулзы типа JSHint, это эрзацы. Декларации типов должна быть встроены в язык и несоответствия обнаруживаться компилятором.). А если под метапрограммированием понимать перекладывание на компилятор генерацию рутинных, повторяющихся кусков кода, то такое метапрограммирование (как и программирование вообще), предпочтительно типобезопасное и в динамической типизации не нуждается.

Сторонники динамических языков часто возражают примерно так «мне нужно, что бы переменная xyz принимала то значение строки, то значение вот с эдакой структурой». Заметим, на практике, если уж мы будем работать с содержимым xyz, то кол-во вариантов конечно, и ограничено логикой программы (да, для выполнения, например, копирования xyz в другую область памяти, нам ничего кроме ссылки и размера не нужно, но не для работы с конкретным её содержимым). А раз так, то xyz может быть алгебраического типа. В pascal можно заменить на запись с вариантами, в С на union и пр.

Распространённость динамически типизированных языков я связываю со временем, когда web-сервера были практически только у провайдеров, а они разрешали абонентам использовать на своих страницах почти только perl и php. В те времена ни о какой предкомпиляции и JIT слыхом не слыхивали. Как и о песочницах. Интерпретаторы этих скриптов делали на коленке и каждый помаленьку. По этому они, впрочем как и js, по дизайну напоминают письмо из простоквашино. Потом скрипты «возмужали» и «заматерели», обзавелись кое где JIT-ом, но примитивность динамической типизации осталась.

Не даром сейчас полным ходом идёт разработка и внедрение языков со статической типизацией компилируемых в js (TypeScript, Elm), а php держится за счёт инерции мышления (как фортран или кобол), не более.

Да, есть ещё вполне динамический, и более свежий Ruby. Ну, дык, его автор сам до того прогал на perlе, стало быть привык к динамической типизации, да и рассчитывал на любителей перловки.

Собственно, я что хочу сказать. В конкретном, динамически типизированном скрипте могут быть очень интересные и полезные фенечки за что его могут любить прогеры с ограниченным знанием языков. Только фенечки фенечками, а динамическая типизация бяка. Почему бяка? Ну, легко нагуглить, и навикипедить. Использовать же в компилируемом языке динамическую типизацию – вообще маразм. Исключение – языки выполняемые на виртуальной Erlang машине со встроенной динамической типизацией. Автор (или кто то из разрабов) утверждал что иначе механизм динамической замены кода не получался. Со скрипом, поверим на слово. Тем более, что там стараются контролировать типы на уровне библиотеки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2016, 01:13
Ответы с готовыми решениями:

Определите, какие языки знают все школьники и языки, которые знает хотя бы один из школьников
Здравствуйте. Помогите пожалуйста решить задачу: Каждый из N школьников некоторой школы знает Mi языков. Определите, какие языки знают...

Meta Keywords - капля пользы?
Поглядел куча сайтов, keywords'ы народ до сих пор прописывает. Актуально ли?

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

177
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
02.03.2016, 15:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nullxdth Посмотреть сообщение
Дай тем же "питонястам" что-нибудь простенькое написать на статике (например, на Go), как они тут же начинают выть от уймы разных деталей и ограничений статики о которых они даже не задумывались программируя на Python.
С чего ты взял, что они только на динамических языках писали?

Цитата Сообщение от nullxdth Посмотреть сообщение
Скинь ссылку на тесты что-ли на какую-нибудь распространённую библиотеку, где проверяются типы.
Мне лень искать, если честно. Но вот чел пишет про юнит-тесты и типизацию на примерах реальных проектов: https://drive.google.com/file/... view?pli=1
Можешь прочитать только начало и конец.

Ну и вообще вот есть такая статейка по качеству кода http://macbeth.cs.ucdavis.edu/lang_study.pdf

Цитата Сообщение от nullxdth Посмотреть сообщение
Ну это же пипец какой-то, как там это хозяйство записывается. Реализация не многим лучше, чем идея записывать аннотации типов в docstring-ах
Дело вкуса. Кому-то лучше в некоторых местах так, чем скобки везде
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
02.03.2016, 22:24
Цитата Сообщение от ct0r Посмотреть сообщение
Дело вкуса. Кому-то лучше в некоторых местах так, чем скобки везде
Ну да, точно. Скобки вида {-@ ... @-} и прочий сраный ascii-арт, куда приятнее, чем обычные нормальные скобки. Я, право, не понимаю, почему не такие скобки, например: {-[[!!!111 ... 111!!!]]-}: так было бы гораздо круче. Дело вкуса однако.
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
17.03.2016, 05:37
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Где ещё, якобы нужна динамическая типизация?
В геоинформационных системах. В частности, для работы с этой штукой: ENVI. Там применяется хитрый язык IDL (Interactive Development Language) - динамически типизированный язык сценариев. Живет уже давно, жив до сих пор и помирать не собирается.
При обработке спутниковых данных эти самые данные поставляются вендором в самых разных форматах (TIFF, GeoTIFF, HDF, Shapefile, и прочая) с кучей метаданных, с различной внутренней структурой каталогов (как в HDF с его B-деревьями), с различными типами данных внутри (int, float, double, long, string, etc). Ситуация, когда нужно использовать инфу с различных ИСЗ (а стандарта по сути нет, есть EOS со своей терминологией (NASA), но не везде применяют и не всегда) - совмещать, сравнивать, дополнять данные из разных источников - вещь весьма распространенная.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
17.03.2016, 08:22  [ТС]
Цитата Сообщение от cmath Посмотреть сообщение
В геоинформационных системах. В частности, для работы с этой штукой: ENVI. Там применяется хитрый язык IDL (Interactive Development Language) - динамически типизированный язык сценариев. Живет уже давно
Мало ли что где живёт. Динозавры тоже жили. Я не говорю, что там надо срочно всё переделать, но преимущества там от динамики нет.
Цитата Сообщение от cmath Посмотреть сообщение
При обработке спутниковых данных эти самые данные поставляются вендором в самых разных форматах (TIFF, GeoTIFF, HDF, Shapefile, и прочая) с кучей метаданных, с различной внутренней структурой каталогов (как в HDF с его B-деревьями), с различными типами данных внутри (int, float, double, long, string, etc).
Повторюсь из этой темы "В статике это деревья и списки из ADT, где варианты в ADT - это заранее известный, тот самый набор примитивных типов.". Парсинг данных разных форматов на статике, минимум не хуже. Наверняка есть либы для работы со всем этим, как они есть для JSON и XML для (почти?) всех языков.
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
17.03.2016, 10:57
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
есть либы
Для hdf5 есть hdfDotNet для C#.NET, есть еще библиотека для C++, но они работают медленее, и поддерживать код под них тяжелее, все преимущество от типобезопасности убьется об сложность разработки. Для меня главный смысл динамической типизации - это возможность найти общее решение задачи, вместо того, чтобы писать некоторое (пусть и не очень большое) множество частных.
***
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
В статике это деревья и списки из ADT
Нужен класс-полиморф, в котором будет абстрактная функция, которая будет возвращать либо int, либо float, либо double, либо bool в зависимости от того, какой конкретно тип данных содержит потомок, можно, конечно, возвращать указатель void *ptr на возвращаемое значение, но вот загвоздка - все данные используются для проведения математических операций и нужно свести к минимуму все операции сравнения/приведения типов, поскольку данные будут обрабатываться в некотором цикле, и данных очень много, не тысяча элементов, и даже не миллион, а, самое маленькое - миллиард, но в основном это будет довольно большое число минимум с двенадцатью знаками в его записи. Да, еще очень возможно, эти классы будут использоваться в составе матриц и более тяжелый вещей с количество измерений от 3 шт. Предложите свое решение на abstract data type.
Это, кст, вполне типичная задача, с которой приходится иметь дело. Без проверки типов - не безопасно - да, но зато работает быстро и выглядит проще. А данные нужны сейчас, а не через год, месяц и даже неделю, т.к. от них может, в том числе, зависеть чья-то жизнь (при стихийных бедствиях).
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
но преимущества там от динамики нет
Слишком категоричное заявление, тем более что с указанной системой вы ни разу не работали. Специфика области вынуждает создавать такие вещи, как IDL, иначе бы его просто не было, или это была бы столь обожаемая вами статика. ЭТО НЕ PHP и создавалось научными работниками для научных же работников. Все было просчитано и разрабатывалось из потребностей практики, IDL не используется для ширпотреба и приложения на нем обычный пользователь в своей жизни никогда не увидит, только созданные на их основе продукты.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2016, 11:10
Цитата Сообщение от cmath Посмотреть сообщение
Без проверки типов - не безопасно - да, но зато работает быстро
Такое ощущение, что все сторонники динамической типизации думают, что это какая-то магия, которая сама по себе быстро работает и что-то там даже еще и гарантирует
Типа: "я не использую subtype полиморфизм в динамических языках, поэтому у меня ничего не тормозит! Ведь нет оверхеда на косвенные вызовы"
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
17.03.2016, 11:17
Voivoid, я не сторонник динамической типизации. Я сторонник подхода - каждой задаче свой инструмент. Я не ищу идеальное решение, я ищу эффективное. А на счет проверки типов - в C++ в runtime проверять типы приходится с помощью довольно таки медленных высокоуровневых конструкций (когда счет на микросекунды), в то время как в динамике при хорошей реализации все происходит на низком уровне.
***
Так кто-нибудь предложит решение задачи из поста #165 в статике? Я жду.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2016, 11:23
Цитата Сообщение от cmath Посмотреть сообщение
в то время как в динамике при хорошей реализации все происходит на низком уровне.
Бггг, вот о чем я и говорю, магия динамики... Как ты себе это представляешь-то?

Цитата Сообщение от cmath Посмотреть сообщение
Так кто-нибудь предложит решение задачи из поста #165 в статике? Я жду.
Да эта задача тут уже несчетное число раз всплывала, в первом приближении достаточно алгебраиеских типов, если например речь о C++, то boost::variant
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
17.03.2016, 12:12  [ТС]
Цитата Сообщение от cmath Посмотреть сообщение
Нужен класс-полиморф, в котором будет абстрактная функция, которая будет возвращать либо int, либо float, либо double, либо bool в зависимости от того, какой конкретно тип данных содержит потомок, можно, конечно, возвращать указатель void *ptr
Ни в коем случае. Я же написал про ADT, он же Алгебраический тип данных (а не abstract data type), он же discriminated union. Можно его возвращать. В языках, в которых этого нет, можно вначале запросить тип, потом значение конкретного типа. Всё равно, обрабатывать придётся в разных ветках. int явно не так надо обрабатывать как string. А, на самом деле, типов "по смыслу" обычно больше чем примитивных типов, т.е. int координата и int кол-во и ещё всякое, и каждый обрабатывается по своему.
Цитата Сообщение от cmath Посмотреть сообщение
и нужно свести к минимуму все операции сравнения/приведения типов
ну, по скорости, грамотно спроектированная статика всегда быстрее.
Цитата Сообщение от cmath Посмотреть сообщение
с указанной системой вы ни разу не работали
Не важно. Всё сводится к деревьям, спискам, ADT. Динамические типы данных так и хранятся. Плюс лишние проверки в run-time.
Цитата Сообщение от cmath Посмотреть сообщение
Специфика области вынуждает создавать такие вещи, как IDL, иначе бы его просто не было
Этот язык, видимо, предметно ориентированный (DSL), и такие языки нужны, но это параллельная классификация языков. Существование же динамически типизированных языков (и появление новых), в том числе среди DSL, объясняется, как полагаю, инерцией мышления (выучившему динамический язык трудно понять как может быть иначе). Ну ещё написание интерпретатора скрипта немного упрощается, если там, всё равно, будут хранится динамические данные. Можно бы было сделать их проверку в compile-time, но делать это разработчики первых скриптов не стали. Не сколько от лени, сколько от тормознутости тогдашнего железа. Так и пошло. А теперь даже в динамически типизированные языки (в JavaScript) вынужденно компилируют из статических (TypeScript, elm, PureScript, ...).
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
17.03.2016, 14:49
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
А теперь даже в динамически типизированные языки (в JavaScript) вынужденно компилируют из статических (TypeScript, elm, PureScript, ...).
Или из динамических, что чаще всего. Один только CoffeeScript по частоте использования перекрывает все перечисленные.

Добавлено через 5 минут
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Ну ещё написание интерпретатора скрипта немного упрощается
Хех. Если бы "немного". Статика сама по себе ставит жирный крест на интерактивной разработке, ввиду невозможности реализации адекватного REPL-а. То есть, выбери статику - скажи нет интерактивной разработке в образе.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
17.03.2016, 15:33  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Один только CoffeeScript по частоте использования перекрывает все перечисленные.
Я уже говорил, что частота использования, сама по себе для меня не аргумент. В данном случае причина очевидна - на кофе переползало много жаваскриптеров. Им так привычнее. (Я сам немного был жскриптером, вот там и прочувствовал недостатки динамики.)
Цитата Сообщение от nullxdth Посмотреть сообщение
Статика сама по себе ставит жирный крест на интерактивной разработке, ввиду невозможности реализации адекватного REPL-а.
REPL не для отладки, а для создания программ - это маразм. Но вопрос "++-- интерактивной разработки ПО из терминала" отдельная тема. А для отладки возможностей REPL-ов Haskell, F# достаточно. Тем более, что отлаживать чаще стоит другими способами (тоже отдельная тема, интересная, кста).
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
17.03.2016, 17:19
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
REPL не для отладки, а для создания программ - это маразм.
Это маразм, когда язык статичен и убог. Когда же язык и среда предоставляет такую возможность, такая интерактивная разработка становится невероятно удобным и эффективным занятием. Ты не пишешь большие куски кода, а потом компилируешь, тайпчекаешь и воссоздаешь окружение, а делаешь всё прямой здесь и сейчас. Выбор настоящих мастеров, которые ценят время.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
17.03.2016, 18:12  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
интерактивная разработка становится невероятно удобным и эффективным занятием.
Признаюсь, что слабо представляю как это, и не представляю как при этом можно получить что то кроме г-кода. Как это происходит в общих чертах, без примеров на скобках? Шаг проектирования при этом тоже в REPL-е или его вообще нет? Почему это нужно делать в REPL-е, а не в графической среде? Вы уверены что динамика для этого принципиальна? Некоторые ide для статических компилируемых языков, в ходе отладки позволяют смотреть/изменять значения и даже переписать часть кода с частичной перекомпиляцией и продолжением отладки без перезапуска приложения. Не являются ли возможности конкретного средства интерактивной разработки для скобок конкретного динамического языка никак от статика-динамика независящие? Ну и есть ли какие то статьи-книги доказывающие эффективность такого подхода не на примере скобок, ибо, если только для них, то это докажет обратное.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2016, 18:19
Цитата Сообщение от nullxdth Посмотреть сообщение
Статика сама по себе ставит жирный крест на интерактивной разработке, ввиду невозможности реализации адекватного REPL-а
Не вижу никаких принципиальных проблем. Скажем тот же repl haskell'а (ghci) вполне себе работает. Кстати даже для C++ есть калечный repl в visual studio
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.03.2016, 18:50
Цитата Сообщение от cmath Посмотреть сообщение
на счет проверки типов - в C++ в runtime проверять типы приходится с помощью довольно таки медленных высокоуровневых конструкций (когда счет на микросекунды), в то время как в динамике при хорошей реализации все происходит на низком уровне.
бред.

Цитата Сообщение от cmath Посмотреть сообщение
Так кто-нибудь предложит решение задачи из поста #165 в статике? Я жду.
у вашей динамики под капотом тормозной интерпретатор,
который внезапно будет выполнять весь джентельменский набор медленных операций,
по сравнению типов и обеспечению типо-безопасности.

любое решение в статике - это то,
что под капотом у вашей динамики.

решений множество.
и самое простое из них:
в дебаге делаем проверки типо-безопасномти.
в релизе - не делаем.

при годном тестировании,
это дает надежность почти как у дебага.
а скорость - как в релизной статике.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.03.2016, 11:23
Цитата Сообщение от hoggy Посмотреть сообщение
у вашей динамики под капотом тормозной интерпретатор
Это заблуждение. Динамика далеко не всегда означает интерпретатор. Почти никогда не означает, в современном мире.

Добавлено через 1 минуту
Цитата Сообщение от Voivoid Посмотреть сообщение
Скажем тот же repl haskell'а (ghci) вполне себе работает. Кстати даже для C++ есть калечный repl в visual studio
REPL REPL-у рознь. Lisp REPL полноценен и разработка в образе является основной конкретно в Common Lisp.

Добавлено через 1 минуту
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Признаюсь, что слабо представляю как это, и не представляю как при этом можно получить что то кроме г-кода.
Разработка снизу вверх есть такой подход. Абсолютно точно позволяет получить что-то кроме г-кода.

Добавлено через 3 минуты
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Как это происходит в общих чертах, без примеров на скобках?
Запускаешь среду, загружает весь runtime языка с необходимыми библиотеками. И прям в среде начинаешь писать всякие выражения, функции и прям из среды компилируешь/выполняешь выражения. Пишешь, например, какой-нибудь web service и прям в реальном времени меняшь поведение всяческих entrypoint-ов и отлаживаешься на месте.

Добавлено через 1 минуту
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Шаг проектирования при этом тоже в REPL-е или его вообще нет?
Проектирование происходит по ходу дела, ну максимум на шаг два вперёд.

Добавлено через 1 минуту
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Почему это нужно делать в REPL-е, а не в графической среде?
REPL не всегда означает какой-то там консольный интерфейс. Всё можно делать из любимой IDE.

Добавлено через 3 минуты
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Некоторые ide для статических компилируемых языков, в ходе отладки позволяют смотреть/изменять значения и даже переписать часть кода с частичной перекомпиляцией и продолжением отладки без перезапуска приложения.
Да, позволяют. Типа С++ в Visual Studio. Но там куча ограничений. А тот же Lisp позволяет менять поведение всего. В том числе самого себя. Сам язык так спроектирован, что бы это было возможным и, что важно, удобным.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,676
Записей в блоге: 9
18.03.2016, 15:07  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Разработка снизу вверх
Только снизу вверх для хоть сколь ни будь сложных проектов приведёт к многократному переписыванию и стимулирует г-код.
Цитата Сообщение от nullxdth Посмотреть сообщение
Проектирование происходит по ходу дела, ну максимум на шаг два вперёд.

Цитата Сообщение от nullxdth Посмотреть сообщение
REPL не всегда означает какой-то там консольный интерфейс. Всё можно делать из любимой IDE.
REPL - это REPL, т.е. терминал (консоль), хоть куда вставленный. B VS, для F# можно выделить фрагмент, Alt-Enter и он выполнится в другом окне, в REPL. Но создавать исходник в REPL маразм, представляю какой потом код получится.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
19.03.2016, 14:50
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Только снизу вверх для хоть сколь ни будь сложных проектов приведёт к многократному переписыванию и стимулирует г-код.
Я даже не хочу пытаться тут объяснить почему эта твоя фраза абсолютна наивна и невежественна.
Чуть наброшу бисера:
https://en.wikipedia.org/wiki/... -up_design
http://paulgraham.com/progbot.html
https://en.m.wikipedia.org/wiki/Worse_is_better

Вообще разговор о подходах к проектированию/разработке глубоко дискуссионный. Ты не готов к нему

Добавлено через 1 минуту
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
REPL - это REPL, т.е. терминал (консоль),
read-eval-print loop. Понимать под этим "терминал (консоль)" конечно можно, но слишком уж узко и тупоголово.

Добавлено через 1 минуту
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Но создавать исходник в REPL маразм, представляю какой потом код получится.
Да брось! Ты и представляешь?

Добавлено через 13 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
https://en.wikipedia.org/wiki/Top-do...ttom-up_design
Более точная ссылка: https://en.wikipedia.org/wiki/... evelopment
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2016, 14:50

Как динамически выделять память на один элемент массива?
Вот программа: int main() { int n,a,b; Item *mas; cout << "Enter amount of coordinates" << endl; cin >>...

Один обработчик события для нескольких динамически созданных объектов
Я программно создаю несколько картинок и их кол-во всегда разное. Создаю картинки циклом: for I := 1 to count_book do ...

Интерпретируемые языки VS Компилируемые языки
Я лично не смог вспомнить чем хоть один из них, лучше другого :) Хотя возможно скоростью

В коде динамически наполняется массив и его элементы выводятся на сцену, но выводится только один элемент
В коде представленном ниже...при клике на кнопку (в роли кнопки прямоугольник) Должен наполнятся массив одинаковыми элементами в данном...

никакой тип
как реализовать процедуру вроде этой procedure config(name,text:string;t,l,w,h:integer); begin name.top:=t; name.left:=l; ...


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

Или воспользуйтесь поиском по форуму:
178
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
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. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru