Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Заблокирован

Обсудим идеи как можно радикально облегчить и упростить программирование?

13.09.2016, 21:20. Показов 4340. Ответов 94
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обсудим идеи как можно облегчить и упростить программирование?
Программирование с автоматически генерируемыми "IF...THEN...ELSE"


Есть ли языки без функций и "IF...THEN...ELSE"?

Не для кого не секрет что не смотря на то, что на заре развития инструментов программирования говорилось, что скоро языки программирования настолько приблизятся к языкам естественного общения, что программировать сможет даже домохозяйка это не произошло. Писать большие программы все так же мучительно и долго. Хотя уже более 50 лет инструментарий развивается.

Мне кажется что сложность программирования объясняется выбранной формой представления программы.

Из-за которой большую часть времени программист разбирается в тысячах "IF..THEN..ELSE" и сотнях функций. Даже в программе, написанной на объектно-ориентированном языке

А можно ли придумать какую-то форму представления программы, в которой бы не надо этого было делать?

Ну или хотя бы чтобы часть "IF..THEN..ELSE" и функций среда разработки генерировала сама.

Какие это могут быть формы?

Ну типа тоже текст, но более близкий к языку естественного общения.

Ну или графического представление.

Человек нарисовал световым пером на планшете картинку - а система распознала её и сгенерировала код.

Или программировать просто разговаривая с компьютером на человеческом разговорном языке. Ты говоришь компу - а он тебя понимает и генерит код.

Вообщем давайте подумаем вместе: что не дает в разы упростить и ускорить процесс программирования и снизить на порядки число багов?

Я думаю что форма представления программ будет меняться.

Уже давно назрела необходимость.
Потому что сложность программ и решаемых ими задач растет.

Поэтому нужно искать более адекватное, чем PLAIN-текст , представление программы (средства её обзора), её логики, структуры и смысла.

Так и средства разработки и контроля изменений

Просто мы продолжаем даже на высоких уровнях абстракции использовать всю ту же модель: "If...Then...else"

Может пора придумать что-то ещё?

Я думаю, что представление программы в виде "чисто PLAIN-текст и больше ничего кроме текста" скоро уйдет
, так как оно уже тормозит прогресс: сложные задачи решать очень сложно с таким преставлением.Потому что оно не очень наглядно и удобно. А ведь сложность задач постоянно растет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2016, 21:20
Ответы с готовыми решениями:

Работа с 2 формами. Можно как то облегчить?
Сделал я прогу, и теперь нужно что бы настройки программы открывались в новом окне, но из за того что я делал всё в 1 окно основнок, то...

Как можно упростить?
Как можно упростить #include <stdio.h> #include<stdlib.h> int main () { int a = -1; int i, d; int max = 0; ...

Как можно упростить код?
Задание такое: Решение следующее: public static int maxLandSize(double map) { int result = 0; for (int i = 0; i...

94
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.09.2016, 02:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
А читабельность?

По моему прекрасно читабельно
0
Заблокирован
29.09.2016, 07:16  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
По моему прекрасно читабельно
Вложение 739619
А по моему нет.
Код в таком виде
C++
1
2
3
4
5
6
7
8
[inline T3D]Vector[ operator]*[(const T3D]{1}[& r)]const[;]
              #              &                        #
            Point            *                        #
              #              &                        #
        UniformMatrix        *                        #
              #              &                        #
              #              *=                     #DEL
              #              &=                       #
Позволяет четко видеть его структуру без напряжения внимания.
Чем в таком:
C++
1
2
3
4
5
6
7
8
    inline T3DVector operator*(const T3DVector& r)const;
    inline T3DVector operator&(const T3DVector& r)const;
    inline T3DPoint operator*(const T3DPoint& r)const;
    inline T3DPoint operator&(const T3DPoint& r)const;
    inline T3DUniformMatrix operator*(const T3DUniformMatrix& r)const;
    inline T3DUniformMatrix operator&(const T3DUniformMatrix& r)const;
    inline T3DUniformMatrix& operator*=(const T3DUniformMatrix& r);
    inline T3DUniformMatrix& operator&=(const T3DUniformMatrix& r);
Добавлено через 4 минуты
Предложенный мной вариант позволяет акцентировать внимание на самых значимых частях кода
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
29.09.2016, 07:37
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вы не ошиблись? Если типизация статическая значит тип указывается при объявлении переменной (аргумент это тоже переменная).
Я не ошибся, а вот Вы ошибаетесь. Если типизация статическая, значит компилятор знает тип каждой переменной. Но из этого не следует, что тип должен быть задан явно.
Даже в C# я могу написать "var x = ....", а компилятор заменить моё "var" на правильный тип.
0
Заблокирован
29.09.2016, 22:58  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Даже в C# я могу написать "var x = ....", а компилятор заменить моё "var" на правильный тип.
__________________
Даже в C++ я могу написать
C++
1
const i = 5;
И компилятор поймет какой тип я имею в виду
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
29.09.2016, 23:15
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Даже в C++ я могу написать
И компилятор пошлет подальше с ошибкой "C++ requires a type specifier for all declarations"
а поймет он только при явном указании самостоятельно вывести тип из правой части:
C++
1
const auto i=5;
Добавлено через 1 минуту
Цитата Сообщение от Shamil1 Посмотреть сообщение
Даже в C# я могу написать "var x = ....", а компилятор заменить моё "var" на правильный тип.
var это аналог auto в С++ насколько понимаю?
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
30.09.2016, 01:34
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
var это аналог auto в С++ насколько понимаю?
Да.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.09.2016, 01:45
Цитата Сообщение от Shamil1 Посмотреть сообщение
Да.
Ну с аргументами функций такой финт ушами неприменим. Потому как умножение к примеру вектора на вектор и на матрицу делаются по разному. А там где применим для этого существуют шаблоны.
0
1979 / 835 / 115
Регистрация: 01.10.2012
Сообщений: 5,178
Записей в блоге: 2
30.09.2016, 05:49
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
По моему прекрасно читабельно
И да и нет. С оформлением и формальностями все нормуль, ну я бы пожалуй разделился
C++
1
2
3
4
5
    inline T3DVector operator*(const T3DVector& r)const;
    inline T3DVector operator&(const T3DVector& r)const;
 
    inline T3DPoint operator*(const T3DPoint& r)const;
    inline T3DPoint operator&(const T3DPoint& r)const;
Но это дело вкуса, беда в другом. Вот я смотрю на Ваши операторы и не знаю что они делают. Оператор * часто используют как скалярное произведение, операция очень ходовая. Однако Вы возвращаете вектор - покомпонентное умножение, что ли? Ну оно нужно в году раз. Оператор & еще более загадочен - наверное векторное произведение. Его часто делают оператором ^, я предпочитаю |, в любом случае необходимы комментарии. И лучше эти операторы сделать friend'ами а еще добавить ф-ции делающие то же самое, напр dot и cross. Оператор удобен но иногда нужно и "подчеркнуть".

Совершенно неважно сколько там написано, цель одна - чтобы читающему было понятно, и как можно быстрее
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.09.2016, 06:13
Цитата Сообщение от Igor3D Посмотреть сообщение
Однако Вы возвращаете вектор - покомпонентное умножение, что ли?
* - Векторное произведение, & покомпонентное.

Цитата Сообщение от Igor3D Посмотреть сообщение
И лучше эти операторы сделать friend'ами
Зачем? какая разница каким образом будет объявлено что у него первый параметр? А вот у матриц которые добавляются позже операции с векторами слева сделаны фриендами.

Добавлено через 1 минуту
Цитата Сообщение от Igor3D Посмотреть сообщение
а еще добавить ф-ции делающие то же самое, напр dot и cross. Оператор удобен но иногда нужно и "подчеркнуть"
Я так думаю лучше набор символов операторов расширить до совпадения этих дел с математическим. Но это уже вопрос совсем другой разработки (дополнительного препроцессора-метакомпилятора)
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
30.09.2016, 16:27
Цитата Сообщение от Igor3D Посмотреть сообщение
Вот я смотрю на Ваши операторы и не знаю что они делают.
Если отвлечься от данной конкретной задачи.
Преимущество языка С++ в том, что его синтаксис знаком (практически) каждому программисту.
Точно так же, каждый программист на Хаскеле знает, что такое map, fold и т.п. Но, пока не все программисты на Си-подобных языках это знают. Между тем, 90% всех циклов в коде на С++ являются либо map+filter, либо fold.

p.s. Никто не читал "Вавилон-17"?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.10.2016, 05:13
Цитата Сообщение от Shamil1 Посмотреть сообщение
Между тем, 90% всех циклов в коде на С++ являются либо map+filter, либо fold.
Только при этом еще имеется возможность взаимодействия между разными элементами и изменения исходного списка - т.е. гораздо более сложные манипуляции, без переписывания в другой список, в отличии от ФП-анахронизма.

Добавлено через 7 часов 50 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
Никто не читал "Вавилон-17"
Красивая сказка. Но всего лишь сказка. Не имеющая ничего общего с реальной действительностью.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
01.10.2016, 17:09
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Только при этом еще имеется возможность взаимодействия между разными элементами и изменения исходного списка
Между тем, в 90% случаев эти возможности не нужны, а цикл является либо map+filter, либо fold.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
03.10.2016, 14:28
Цитата Сообщение от Shamil1 Посмотреть сообщение
Между тем, в 90% случаев эти возможности не нужны, а цикл является либо map+filter, либо fold.
у кого как. У меня 99,9% циклов обрабатывающих списки либо изменяют список либо взаимодействие между соседними элементами
0
Заблокирован
30.10.2016, 22:49  [ТС]
А как вам идея регекса регексов?
Ну т.е. когда REGEXP описывает не искомый текст, а REGEXP, который описывает то, что ищем.

Добавлено через 11 часов 22 минуты
Вообще регексы - это занимательная штука.
Они как раз пример стиля программирования когда программист описывает только самую суть задачи, а нужные переменные, циклы и IF-ы генерятся и уничтожаются автоматически, по мере необходимости.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
31.10.2016, 09:45
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
А как вам идея регекса регексов?
Ну т.е. когда REGEXP описывает не искомый текст, а REGEXP, который описывает то, что ищем.
Регекс - это автомат для поиска. Где будет искать регекс регексов?

Если возможностей текущего языка описаний регулярных выражений не хватает, то можно создать новую версию языка... только видимо это не нужно почти никому (то, что было бы полезно, слишком сложно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2016, 09:45

Можно ли как-то упростить код
Добрый день, уважаемые. Пишу небольшую библиотечку. В ней, с помощью Writerа составляю некоторую последовательность. Потом эта...

Как можно это упростить?
public bool yearSort(int year, bool from, bool include) { if (from) { if (include) { ...

Как можно упростить код?
javascript изучаю недавно, написал небольшой код, но я думаю его можно сделать проще на много, но как проще его сделать я не знаю html: ...

Как можно упростить процесс?
Делал тест и столкнулся со следующей проблемой,в тесте имеется около 150 вопросов.Первый вариант был делать делать каждый вопрос на...

как можно упростить код?
как можно упростить код? есть несколко label по ним двигается слово по 1 букве на label и при смене буквы меняется Random цвет(color) ...


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

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