powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Зачем писать программы сложно и долго, когда можно просто и легко?
24 сообщений из 324, страница 13 из 13
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37795990
Division X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNага, и нету функций для описания гуя )))
ну это же отлично, что в языке нет лишнего, а все что нужно - берем в либах.
Не, при таком подходе - лишнего нет только в брейнфаке, как уже тут правильно заметили.
Гуя в JS (как таковом) тоже нет да и вообще ввод-вывод зависит от конкретного рантайма (и потому выносится в какие-то внешние объекты), а вот событийно-ориентированность - неотъемлемая часть любого рантайма, будь то браузер или stand-alone движок. И да, неужели наличие некислого встроенного набора функций (точнее, не функций, а встроенных типов Array, Number, Object, Function, String и т.д. с соответствующими методами, которых много, но среди которых тоже, имхо, нет ничего лишнего) - это минус, а правильный подход - как в Си - "ни шагу без инклудов"?

ZyK_BotaNвот чистота и позволяет затратить меньше телодвижений.
Ну вот я и попросил продемонстрировать, насколько меньше телодвижений надо затратить для обнаружения повторяющихся элементов в векторе произвольной длины.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796086
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division XZyK_BotaNага, и нету функций для описания гуя )))
ну это же отлично, что в языке нет лишнего, а все что нужно - берем в либах.
Не, при таком подходе - лишнего нет только в брейнфаке, как уже тут правильно заметили.
Гуя в JS (как таковом) тоже нет да и вообще ввод-вывод зависит от конкретного рантайма (и потому выносится в какие-то внешние объекты), а вот событийно-ориентированность - неотъемлемая часть любого рантайма, будь то браузер или stand-alone движок. И да, неужели наличие некислого встроенного набора функций (точнее, не функций, а встроенных типов Array, Number, Object, Function, String и т.д. с соответствующими методами, которых много, но среди которых тоже, имхо, нет ничего лишнего) - это минус, а правильный подход - как в Си - "ни шагу без инклудов"?

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

ты бы еще пример "2+2" попросил привести
приемущества фп - проявляются в сложных системах, а так вот - дословно переписанный код:

Код: sql
1.
2.
3.
4.
5.
6.
import qualified Data.Map 

douplicates list = repeated
    where items = foldl insert Data.Map.empty list
          insert its x = Data.Map.insertWith' (\ old new -> old + 1) x 0 its
          repeated = Data.Map.keys $ Data.Map.filter (> 0) items



а то что ассоциативный массив(как и событийное программирование) - находиться в библиотеке - дак это не минус языка )

ну и то что в хаскеле все по строже(не являются ложью, не отсутствие элемента, не ноль) - это тоже, имхо, не минус языка.

по быстродействию не тестил, но уверен - что обгонит жс.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796092
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division Xа вот событийно-ориентированность - неотъемлемая часть любого рантайма

вот что за бред. какое к рантайму оно отношение имеет?
это ты сам придумал?
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796156
Division X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNвот что за бред. какое к рантайму оно отношение имеет?
это ты сам придумал?
Ничего не придумывал, всё на событиях.
Серверный рантайм , например
Клиентский рантайм


ZyK_BotaNа так вот - дословно переписанный код:

Код: sql
1.
2.
3.
4.
5.
6.
import qualified Data.Map 

douplicates list = repeated
    where items = foldl insert Data.Map.empty list
          insert its x = Data.Map.insertWith' (\ old new -> old + 1) x 0 its
          repeated = Data.Map.keys $ Data.Map.filter (> 0) items



Ну, я постил решение ещё короче...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function getRepeats(list) {
var repeated = [];
list.forEach(function(val,index,arr){
	if(index!=arr.lastIndexOf(val) && repeated.indexOf(val)==-1)
		repeated.push(val);
	});
return repeated;
}


...но оно оказалось фтристараз (c) медленнее вышеизложенного.

ZyK_BotaNприемущества фп - проявляются в сложных системах
топикстартерЗачем писать программы сложно и долго, когда можно просто и легко?
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796162
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division XZyK_BotaNвот что за бред. какое к рантайму оно отношение имеет?
это ты сам придумал?
Ничего не придумывал, всё на событиях.
Серверный рантайм , например
Клиентский рантайм


ZyK_BotaNа так вот - дословно переписанный код:

Код: sql
1.
2.
3.
4.
5.
6.
import qualified Data.Map 

douplicates list = repeated
    where items = foldl insert Data.Map.empty list
          insert its x = Data.Map.insertWith' (\ old new -> old + 1) x 0 its
          repeated = Data.Map.keys $ Data.Map.filter (> 0) items




Ну, я постил решение ещё короче...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function getRepeats(list) {
var repeated = [];
list.forEach(function(val,index,arr){
	if(index!=arr.lastIndexOf(val) && repeated.indexOf(val)==-1)
		repeated.push(val);
	});
return repeated;
}



...но оно оказалось фтристараз (c) медленнее вышеизложенного.

ZyK_BotaNприемущества фп - проявляются в сложных системах
топикстартерЗачем писать программы сложно и долго, когда можно просто и легко?да, я тупанул, и делал вставку каждый раз, а не когда ноль, могу переделать
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796164
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division X,

ну и я надеюсь, что ты тестировал хаскель код, не в интерпретаторе, а скомпилировал, а потом запустил?
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796165
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division XZyK_BotaNвот что за бред. какое к рантайму оно отношение имеет?
это ты сам придумал?
Ничего не придумывал, всё на событиях.
Серверный рантайм , например
Клиентский рантайм


ZyK_BotaNа так вот - дословно переписанный код:

Код: sql
1.
2.
3.
4.
5.
6.
import qualified Data.Map 

douplicates list = repeated
    where items = foldl insert Data.Map.empty list
          insert its x = Data.Map.insertWith' (\ old new -> old + 1) x 0 its
          repeated = Data.Map.keys $ Data.Map.filter (> 0) items




Ну, я постил решение ещё короче...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function getRepeats(list) {
var repeated = [];
list.forEach(function(val,index,arr){
	if(index!=arr.lastIndexOf(val) && repeated.indexOf(val)==-1)
		repeated.push(val);
	});
return repeated;
}



...но оно оказалось фтристараз (c) медленнее вышеизложенного.

ZyK_BotaNприемущества фп - проявляются в сложных системах
топикстартерЗачем писать программы сложно и долго, когда можно просто и легко?
ну и я не про катраткость, выше я сказал за счет чего краткость:

"

а то что ассоциативный массив(как и событийное программирование) - находиться в библиотеке - дак это не минус языка )

ну и то что в хаскеле все по строже(не являются ложью, не отсутствие элемента, не ноль) - это тоже, имхо, не минус языка.

"
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796169
Division X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNDivision X,

ну и я надеюсь, что ты тестировал хаскель код, не в интерпретаторе, а скомпилировал, а потом запустил?
Хаскелевский не тестировал пока вообще. Я писал о том, что вот это:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function getRepeats(list) {
var repeated = [];
list.forEach(function(val,index,arr){
	if(index!=arr.lastIndexOf(val) && repeated.indexOf(val)==-1)
		repeated.push(val);
	});
return repeated;
}



хоть и короче даже хаскелевского кода, но за счёт двух вызовов *indexOf работает фтристараз медленнее этого:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function getRepeats(list)
{
	var repeated = [];
	var items = {};
	list.forEach(function(val){
		if(items[val])
		{
			repeated.push(val);
			items[val]=0;
		}
		else items[val]=1;
		});
	return repeated;	
}



Вывод - или шашечки, или ехать.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796172
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division Xо за счёт двух вызовов *indexOf работает фтристараз медленнее этого:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function getRepeats(list)
{
	var repeated = [];
	var items = {};
	list.forEach(function(val){
		if(items[val])
		{
			repeated.push(val);
			items[val]=0;
		}
		else items[val]=1;
		});
	return repeated;	
}

никакого вывода.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796175
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division XZyK_BotaNDivision X,

ну и я надеюсь, что ты тестировал хаскель код, не в интерпретаторе, а скомпилировал, а потом запустил?
Хаскелевский не тестировал пока вообще. Я писал о том, что вот это:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function getRepeats(list) {
var repeated = [];
list.forEach(function(val,index,arr){
	if(index!=arr.lastIndexOf(val) && repeated.indexOf(val)==-1)
		repeated.push(val);
	});
return repeated;
}




хоть и короче даже хаскелевского кода, но за счёт двух вызовов *indexOf работает фтристараз медленнее этого:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function getRepeats(list)
{
	var repeated = [];
	var items = {};
	list.forEach(function(val){
		if(items[val])
		{
			repeated.push(val);
			items[val]=0;
		}
		else items[val]=1;
		});
	return repeated;	
}




Вывод - или шашечки, или ехать.а работает прошлый медленнее, так как поиск о(н) а не лог2(н)

что в моем решении, что в товем при поиске в мапе = лог2(н)
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796180
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, раз уже начали про быстродействие и краткость, вот примитивная задача(с решением) напиши ее на js? что-бы искала 100_000_000-й элемент:
авторСуществует знаменитая задача, впервые сформулированная Р. Хэммингом: породить в возраста-
ющем порядке и без повторений все положительные целые числа, у которых нет других простых
делителей, кроме 2, 3 и 5. Очевидное решение состоит в том, чтобы перебирать все натуральные
числа по очереди и проверять, есть ли у них простые множители помимо 2, 3 и 5. Однако эта
процедура весьма неэффективна, поскольку чем больше числа, тем меньшая их доля соответствует
условию. Применим альтернативный подход: назовем искомый поток чисел S и обратим внимание
на следующие факты:
• S начинается с 1.
• Элементы (scale-streams 2) также принадлежат S
• То же верно и для (scale-stream S 3) и (scale-stream S 5).
• Других элементов S нет.
Теперь требуется только соединить элементы из этих источников. Для этого мы определяем
процедуру merge, которая сливает два упорядоченных потока в один упорядоченный поток, убирая
при этом повторения

вот решение на хаскеле:
ZyK_BotaN
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
merge [] s2 = s2
merge s1 [] = s1
merge (s1:s1s) (s2:s2s) | s1 < s2   = s1 : (merge s1s      (s2:s2s))
						| s1 > s2   = s2 : (merge (s1:s1s) s2s)
						| otherwise = s1 : (merge s1s      s2s)

scaleStreams scale = map $ (*) scale

			
getNum n = s_3_56!!n
	where
		s_3_56 = 1          : (merge (scaleStreams 2 s_3_56)
					                 (merge (scaleStreams 3 s_3_56)
					                        (scaleStreams 5 s_3_56 )))



вот ответ:
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796189
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
был былинный топик, где императивщики - разбили свои копья об эту задачу
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796194
Division X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN,

Она решает какие-то практические вопросы? Тем не менее, завтра попробую. Сейчас уже не соображаю.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796199
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division XZyK_BotaN,

Она решает какие-то практические вопросы? Тем не менее, завтра попробую. Сейчас уже не соображаю.
ну я твою же решал ))

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

на языках со сборкой мусора - не видел решения быстрее и чем на хаскеле.

. жду решения .
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796610
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNбыл былинный топик, где императивщики - разбили свои копья об эту задачу???
Элегантное решение придумать может быть сложно, но чтобы не решить вообще?
Каждое число последовательности характеризуется тройкой целых степеней - т.е. по сути мы обходим узлы трёхмерной сетки (причём подавляющее большинство узлов сравнивается быстро, а следующий узел заведомо находится в тонком слое этого пространства). Навскидку, даже без оптимизаций поиск n-ного числа (при log 2 (n)<MaxInt) требует O(n 2/3 ) памяти и O(n 5/3 ) времени - долго, но для n=10 8 не невозможно, да и соптимизировать по времени построение слоя для следующего шага наверняка можно.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796616
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbstractionZyK_BotaNбыл былинный топик, где императивщики - разбили свои копья об эту задачу???
Элегантное решение придумать может быть сложно, но чтобы не решить вообще?
Каждое число последовательности характеризуется тройкой целых степеней - т.е. по сути мы обходим узлы трёхмерной сетки (причём подавляющее большинство узлов сравнивается быстро, а следующий узел заведомо находится в тонком слое этого пространства). Навскидку, даже без оптимизаций поиск n-ного числа (при log 2 (n)<MaxInt) требует O(n 2/3 ) памяти и O(n 5/3 ) времени - долго, но для n=10 8 не невозможно, да и соптимизировать по времени построение слоя для следующего шага наверняка можно.
ZyK_BotaNз.ы. я смог на сишке, юзаю круто оптимизированную либу длинной арифмитики - сюелать более быстрое решение, но в разы - менее понятное(с ручным управлением памятью)
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796628
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstractionдаже без оптимизаций поиск n-ного числа (при log 2 (n)<MaxInt) требует O(n 2/3 ) памяти

можно про память поподробней?

и что за MaxInt имеется ввиду?


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

вот и не смогли написать корректное решение для поиска 100_000_000-го элемента.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796673
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNможно про память поподробней?

и что за MaxInt имеется ввиду?MaxInt - это о том, что не требуется использовать длинную арифметику для степеней.
То есть, у нас есть сетка степеней 2, 3, 5 (три степени свободы); есть текущее число. Число, следующее за текущим (a,b,c), принадлежит множеству {(x,y,z)|x*ln(2)+y*ln(3)+z*ln(5)>a*ln(2)+b*ln(3)+c*ln(5)>(x-1)*ln(2)+(y-1)*ln(3)+(z-1)*ln(5)}. Т.е. это плоский слой, содержащий t 2 элементов, где t - "характерный линейный размер" на текущем шаге; к этому моменту рассмотрено порядка t 3 элементов. Элементы слоя имеет смысл хранить в памяти, в упорядоченной структуре, поскольку для некоторых из них процедура точного сравнения требует длинной арифметики и не должна проделываться на каждом шаге.
Это так, идея решения, код не писал.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796695
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbstractionZyK_BotaNможно про память поподробней?

и что за MaxInt имеется ввиду?MaxInt - это о том, что не требуется использовать длинную арифметику для степеней.
То есть, у нас есть сетка степеней 2, 3, 5 (три степени свободы); есть текущее число. Число, следующее за текущим (a,b,c), принадлежит множеству {(x,y,z)|x*ln(2)+y*ln(3)+z*ln(5)>a*ln(2)+b*ln(3)+c*ln(5)>(x-1)*ln(2)+(y-1)*ln(3)+(z-1)*ln(5)}. Т.е. это плоский слой, содержащий t 2 элементов, где t - "характерный линейный размер" на текущем шаге; к этому моменту рассмотрено порядка t 3 элементов. Элементы слоя имеет смысл хранить в памяти, в упорядоченной структуре, поскольку для некоторых из них процедура точного сравнения требует длинной арифметики и не должна проделываться на каждом шаге.
Это так, идея решения, код не писал.

не понял к чему ты, хотел бы на решение посмотреть.

а на счет сравнения длинных чисел - не понял, мы же на больше меньше сравниваем, не думаю что там проблемы с быстродействием будут.

имхо - основная проблема решения которое я привел - постоянная аллокация памяти для каждого последующего элемента.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796776
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division Xmaytonпропущено...

По поводу ЕС5 - я вообще невкурсе что это такое.
ES5 - ECMAScript 5. Стандарт Javascript, реализованный во всех нормальных браузерах и IE, начиная с 9, а также в stand-alone платформах а-ля nodeJS.

Так Javascript самый что ни на есть функциональный язык.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37796806
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Division XZyK_BotaN,

Она решает какие-то практические вопросы? Тем не менее, завтра попробую. Сейчас уже не соображаю.
Думаю, что нет. Но это интересная мозго-ломка, котороая позволит развить
свой закисший мозк от практичной унылой серости.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37797048
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
Division X
Код: javascript
1.
2.
3.
			items[val]=0;
...
		else items[val]=1;





Я так понимаю, в JS нет класса Set даже с импортами :) ?
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37797185
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNз.ы. а императивщики сломали копья, не потому, что на имп языках нельзя решить, а потому что были уверенны что решение на связных списках - не наш метод, и использовали массивы с прямым доступом.

вот и не смогли написать корректное решение для поиска 100_000_000-го элемента.
Ну если по-совести, то алгоритм вам был предоставлен. А вот искать библиотеки работы с длинной арифметикой - вот тут да, желания никакого не было))). А с изначальной задачей, получением первых 1000 или 10000 элементов вообще проблем не возникло))). Это вы затем начали придумывать всякие сложности.
...
Рейтинг: 0 / 0
Зачем писать программы сложно и долго, когда можно просто и легко?
    #37797813
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kDnZPZyK_BotaNз.ы. а императивщики сломали копья, не потому, что на имп языках нельзя решить, а потому что были уверенны что решение на связных списках - не наш метод, и использовали массивы с прямым доступом.

вот и не смогли написать корректное решение для поиска 100_000_000-го элемента.
Ну если по-совести, то алгоритм вам был предоставлен. А вот искать библиотеки работы с длинной арифметикой - вот тут да, желания никакого не было))). А с изначальной задачей, получением первых 1000 или 10000 элементов вообще проблем не возникло))). Это вы затем начали придумывать всякие сложности. ну я для языка си - нашел библиотеку(с помощью которой сделал по скорости хаскель)


а так - не совсем верно про библиотеку, там писали заведомо более медленные решения, а на счет "алгоритм вам был предоставлен", это да, я и не говорил, что я его придумал, вот только императивщики доказывали что алгоритм плохой, и нужно решение на массивах строить.
...
Рейтинг: 0 / 0
24 сообщений из 324, страница 13 из 13
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Зачем писать программы сложно и долго, когда можно просто и легко?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]