schobi
a month ago
I'm confused by the claims..
You try to compute something that supercomputer can't - by not computing it? Instead the formula is stored in a data structure. But once you need to access all the values you still have something that does not fit the memory and needs to be computed.
I can't judge on the Java side, but suggest to pick a better example on how this can be useful.
DanexCodr
a month ago
Most languages force you to choose: either compute everything upfront (O(n) memory) or write complex lazy evaluation code. Coderive gives you declarative intent with automatic optimization. You write what you mean (for i in [0 to 1Qi]), and the runtime figures out the optimal execution strategy. This is like having a JIT compiler that understands mathematical patterns, not just bytecode."
DanexCodr
a month ago
it only compute what was needed on the right time. See this output for example:
Enter file path or press Enter for default [/storage/emulated/0/JavaNIDE/Programming-Language/Coderive/executables/LazyLoop.cod]: > Using default file: /storage/emulated/0/JavaNIDE/Programming-Language/Coderive/executables/LazyLoop.cod Testing timer() function: Timer resolution: 0.023616 ms
Testing condition evaluation: 2 % 2 = 0 2 % 2 == 0 = true 3 % 2 = 1 3 % 2 == 0 = false 24000 % 2 = 0.0 24000 % 2 == 0 = true
Conditional formula creation time: 2.657539 ms
Results: arr[2] = even arr[3] = odd arr[24000] = even arr[24001] = odd
=== Testing 2-statement pattern optimization === Pattern optimization time: 0.137 ms arr2[3] = 14 (should be 33 + 5 = 14) arr2[5] = 30 (should be 55 + 5 = 30) arr2[10] = 105 (should be 1010 + 5 = 105)
Variable substitution time: 0.064384 ms arr3[4] = 1 (should be 42 - 7 = 1) arr3[8] = 9 (should be 82 - 7 = 9)
=== Testing conditional + 2-statement === Mixed optimization time: 3.253846 ms arr4[30] = 30 (should be 30) arr4[60] = 121 (should be 602 + 1 = 121)
=== All tests completed ===
---
From:
unit test
share LazyLoop { share main() { // Test timer() first - simplified outln("Testing timer() function:") t1 := timer() t2 := timer() outln("Timer resolution: " + (t2 - t1) + " ms") outln()
arr := [0 to 1Qi]
// Test the condition directly
outln("Testing condition evaluation:")
outln("2 % 2 = " + (2 % 2))
outln("2 % 2 == 0 = " + (2 % 2 == 0))
outln("3 % 2 = " + (3 % 2))
outln("3 % 2 == 0 = " + (3 % 2 == 0))
// Also test with larger numbers
outln("24000 % 2 = " + (24K % 2))
outln("24000 % 2 == 0 = " + (24K % 2 == 0))
// Time the loop optimization
start := timer()
for i in [0 to 1Qi] {
if i % 2 == 0 {
arr[i] = "even"
} elif i % 2 == 1 {
arr[i] = "odd"
}
}
loop_time := timer() - start
outln("\nConditional formula creation time: " + loop_time + " ms")
outln("\nResults:")
outln("arr[2] = " + arr[2])
outln("arr[3] = " + arr[3])
outln("arr[24000] = " + arr[24K])
outln("arr[24001] = " + arr[24001])
// Test the 2-statement pattern optimization with timing
outln("\n=== Testing 2-statement pattern optimization ===")
arr2 := [0 to 1Qi]
start = timer()
for i in arr2 {
squared := i * i
arr2[i] = squared + 5
}
pattern_time := timer() - start
outln("Pattern optimization time: " + pattern_time + " ms")
outln("arr2[3] = " + arr2[3] + " (should be 3*3 + 5 = 14)")
outln("arr2[5] = " + arr2[5] + " (should be 5*5 + 5 = 30)")
outln("arr2[10] = " + arr2[10] + " (should be 10*10 + 5 = 105)")
// Test with different variable names
arr3 := [0 to 1Qi]
start = timer()
for i in arr3 {
temp := i * 2
arr3[i] = temp - 7
}
var_time := timer() - start
outln("\nVariable substitution time: " + var_time + " ms")
outln("arr3[4] = " + arr3[4] + " (should be 4*2 - 7 = 1)")
outln("arr3[8] = " + arr3[8] + " (should be 8*2 - 7 = 9)")
// Test that it still works with conditional
outln("\n=== Testing conditional + 2-statement ===")
arr4 := [0 to 100]
start = timer()
for i in arr4 {
if i > 50 {
doubled := i * 2
arr4[i] = doubled + 1
} else {
arr4[i] = i
}
}
mixed_time := timer() - start
outln("Mixed optimization time: " + mixed_time + " ms")
outln("arr4[30] = " + arr4[30] + " (should be 30)")
outln("arr4[60] = " + arr4[60] + " (should be 60*2 + 1 = 121)")
outln("\n=== All tests completed ===")
}
}