« first day (2037 days earlier)      last day (2792 days later) » 

6:00 PM
@RohanJhunjhunwala the stderr of TIO can be accessed by clicking the "debug" button
 
@LeakyNun oh ok, thanks!
 
@RohanJhunjhunwala 45%
the next 50% will be faster lol
 
@LeakyNun kk, do you have a gitHub repo set up, so I can marvel at whats there? I'm interested in seeing what clever optimizations you have.
 
@RohanJhunjhunwala I'm doing it in my IDE
 
@LeakyNun oh ok
 
6:08 PM
So you'll have to wait
Sorry
 
@RohanJhunjhunwala Basically, I prevented it from doing string operations every line
 
@LeakyNun oh, thats smart. Those operations are incredibly costly. String.split() and stuff like that.
 
Yes
 
@LeakyNun so, for GOTOES are you just building a jump table?
 
6:11 PM
@RohanJhunjhunwala bingo
 
@LeakyNun thanks, that is not only more elegant, but also faster
 
You know how assembly language compilers work
ADD is 000, SUB is 001, etc
I also draw inspiration from BOX256
WAIT...
WHEN DID YOU IMPLEMENT EXPONENT :O \o/
 
@LeakyNun I think I implemented it recently after being irritated by how much of a pain it was
Did I omit it from the docs?
 
@RohanJhunjhunwala it wasn't really a pain
@RohanJhunjhunwala i think so
 
@LeakyNun ok, after this, I'll narrow down a much more detailed spec. I think I've homegrown a power function without realizing that alternative lol. I don't know my own language.
 
6:23 PM
@RohanJhunjhunwala Mind if I build my own power function for integers?
 
Is there a way to do a replace-all on a file without opening it up in vim?
 
@EᴀsᴛᴇʀʟʏIʀᴋ I'm NOT spreading :|
 
@El'endiaStarman Yes, you can do vim file -c "%s/foo/bar" -c "wq"
 
> without opening it up in vim
 
in general, -c "foo" lets you do one ex command before opening it.
@zyabin101 That sounds like what he asked for. Unless he meant "without using vim at all" in which case the answer is "use sed"
 
6:30 PM
@RohanJhunjhunwala 50%, which means the compiling is finished
now the program is just a bunch of integers
 
I'm having a problem right now with Webfaction being overzealous in killing my processes if they take any significant amount of time. Hence, opening the (gigantic) file in vim gets killed.
I think that even running it that way got killed, but it's hard to tell.
 
Wait, do you want to use vim or something else?
It sounds like you want sed
 
Well, I've never used sed, so...
 
@El'endiaStarman or use Java to buffer it
 
Also, what's with Mego, Adnan and Jonathan Allan? relieved
 
6:31 PM
Python also has buffer
 
Just opened 128 FF tabs :p
 
This is a simple find-and-replace problem. Python is overkill and Java is seriously overkill.
 
@El'endiaStarman I don't think its that different, but I've never used it before either.
 
Also, I can't guarantee that they won't get killed either.
 
6:32 PM
@DJMcMayhem does sed have buffer?
@El'endiaStarman Simple solution: turn off Webfaction
(and don't use Vim)
 
@LeakyNun Uh, yeah, like that'd work.
 
What's with Mego, Adnan, Jonathan Allan and TuxCrafting? 😦
 
@El'endiaStarman I just tried it. You can do sed s/foo/bar/ oldfile > newfile
 
@DJMcMayhem sed -i 's/foo/bar/' oldfile
 
6:35 PM
Oh, hey that's way better
 
  @LeakyNun sure, build one, is Math.pow bad?
 
@RohanJhunjhunwala I thought Math.pow returns double
 
Speaking of sed, I just received a sed answer on an old challenge like literally 20 seconds ago.
 
Heyyy it wasn't killed!
 
@DJMcMayhem link?
 
6:36 PM
\o/
0
A: How can I get a repdigit?

seshoumaraGNU sed, 224 bytes s/$/:0#/ : y/:#/#:/ /^(.)\1*#/{s/.*#(.*):/\1/;q} :f s/9(@*:)/@\1/ tf s/8(@*:)/9\1/ s/7(@*:)/8\1/ s/6(@*:)/7\1/ s/5(@*:)/6\1/ s/4(@*:)/5\1/ s/3(@*:)/4\1/ s/2(@*:)/3\1/ s/1(@*:)/2\1/ s/0(@*:)/1\1/ s/(^|#)(@*:)/\11\2/ y/@/0/ t Run: sed -rf repdigit.sed <<< "112" Output: 110 ...

 
@LeakyNun in a sense, calling it with two integers will return a precise double. This double can be casted to an int from my understanding
 
@DJMcMayhem what the flying brainhorse
@RohanJhunjhunwala but I hate doubles
 
@LeakyNun why?
 
@RohanJhunjhunwala because there are inaccuracies?
 
@LeakyNun oh, ok, round off error
@LeakyNun yeah I guess I see that, but there shouldn't be innacuracies for any 32 bit integer
 
6:38 PM
@RohanJhunjhunwala you're right
I'll leave it there then
 
@LeakyNun let me verify though... it's an interesting question.
 
How does int test = null; error but not int test = (Integer) null;?
 
@LeakyNun null has no real type, but null can be type casted to an integer the integer than autounboxes to an int automagically
I think test will have the value of zero
@LeakyNun if you wish to optimize the power function feel free to borrow this code...
9
A: calculating powers in Java

Qx__Best the algorithm is based on the recursive power definition of a^b. long pow (long a, int b) { if ( b == 0) return 1; if ( b == 1) return a; if (isEven( b )) return pow ( a * a, b/2); //even a=(a^2)^b/2 else return a * pow ( a * a, b/2); //od...

It may be slightly faster than Math.pow()
 
@RohanJhunjhunwala I don't think so
because Math.pow() is native
 
@LeakyNun ok.
 
6:42 PM
I'm only concerned about accuracies
 
Oh great. Main problem I'm having is that I have Postgres 9.4 on my computer and it's 9.1 on the WebFaction server...
 
@LeakyNun double' has a precision of 52 bits en.wikipedia.org/wiki/Double-precision_floating-point_format I think that means it will be precise for all integers up to 2^32
@LeakyNun are you also optimizing out the whitespace dependencies?
 
@RohanJhunjhunwala which?
 
x + 5 -> x+5 ?
 
Oh, I plan to do that later
if I'm still here
but for now I'll leave it
I probably won't do it
@RohanJhunjhunwala Do you want to have a peek at my code?
 
6:55 PM
@El'endiaStarman I asked you earlier, but you might have missed it...are you getting sick of language design?
 
@NathanMerrill No, not really. I've just got other things at the forefront of my mind at the moment.
 
that's fine. you busy now?
I'm stuck on a particular gotcha
 
Alright, shoot.
 
consider the following functions: myFunc(a: Int), myFunc(a: Int[Positive]). Positive is a trait that is determined at compile time. Several operators can deem an integer as Positive, such as doing if (a > 0), or a = Math.abs(b)
a = get_input()
myFunc(a)
if (a > 0){
    myFunc(a)
}
in the first function call, I don't know that a is positive, so the first function will be called. Inside the if statement, the latter function will be called
 
Can b=0?
 
7:01 PM
@LeakyNun yes, please
 
				switch(tokens[0]&~0b11111111){
				case GOTO:
					ptr = tokens[1];
					continue;
				case GOSUB:
					stack.add(ptr);
					ptr = tokens[1];
					continue;
				case RETURN:
					ptr = stack.pop();
					break;
				case PRINTLINE:
					System.out.println(texts[tokens[1]]);
					break;
				case PRINTCHAR:
					System.out.print((char) evalToken(tokens[0]&1, tokens[1]));
					break;
				case PRINT:
					System.out.print(texts[tokens[1]]);
					break;
				case PRINTINT:
					System.out.println(evalToken(Silos.VARIABLE, tokens[1]));
 
@trichoplax fair, enough. Math.abs() would only guarantee NonNegative
 
@RohanJhunjhunwala above
 
Never mind.
 
@LeakyNun I like it! Reads much cleaner
 
7:02 PM
@zyabin101 Not while two serious conversations are going on.
 
@RohanJhunjhunwala thank you
 
@NathanMerrill Right. Wanted to make sure I wasn't missing something. Makes sense now
 
@NathanMerrill Well, I don't really like function overloading, but go on.
 
@LeakyNun did you optimize out the need for whitespace in between expressions x + 5... x+5 or are we keeeping that a "feature"
 
@RohanJhunjhunwala I didnt
and I probably wont
 
7:02 PM
well, that's option 1. I don't include Traits in the function signature
 
I believe you can do it
 
so, overloading based on traits isn't allowed
 
@LeakyNun yeah shouldnt be to too hard...
@LeakyNun but I might keep it. It improves readability of the code... and any ounces of readability are useful in this language
 
Option 2 is to have some syntax that explicitly determines which one it goes to
 
@RohanJhunjhunwala alright
@RohanJhunjhunwala Mind if I change the loadLine thing from a for loop to System.arrayCopy?
 
7:06 PM
@El'endiaStarman I think I want function overloading to allow both XMLStreamReader(file: File) and XMLStreamReader(filename: String)
 
@LeakyNun Yeah, go ahead, do change it. A System.arrayCopy should be significantly faster
 
I am not a fan of checking for types at runtime
 
@RohanJhunjhunwala Never mind, cannot cast from char[] to int[]
 
If traits are optional there's no way to know at compile time and be consistent. You could however ensure that at east there is no possibility of a trait not being covered e.g if f returns either a psitive or a negative integer and g only takes a positive one, g(f()) throws an error but if g is overloaded to handle both roll with it and wait until runtime
 
@LeakyNun oh
 
7:13 PM
sorry on mobile with spellcheck off
 
Never put off till runtime what you can do at compile time
 
@quartata I should be clear. In my example, it doesn't matter whether the user passes in, the first call will always be to the myFunc(Int) version.
(not the Int[Positive])
Traits are are things that can be identified about variables at compile time, and may change over time
 
So the number is in a superposition of postive and negative until its value is observed?
:P
 
basically :)
for example, if I have a function myListFunc(List<Int>[Empty]), the following code block would work: a = List(); myListFunc(a)
but a.add(4);myListFunc(a) wouldn't
 
So what exacty is the issue then? just use the signature that makes the least assumptions
Ohh Isee. That may not be desirable
 
7:18 PM
@RohanJhunjhunwala My IDE errored me for having public static before Canvas because it is a nested class, also for panel, and for another method that has static
 
my awfull speling will son be of the star board, sory about that
 
hmmmmmmm
 
yeah, you may suddenly be calling a different function, and have no idea
simply because you did a if (a < 0) test
 
Could you have the compiler make as many deductions as it can, and still have the option for the source code to include extra hints from the programmer that the compiler couldn't deduce?
 
@LeakyNun oh my IDE rolls with it, It should just warn you
 
7:20 PM
»  cargo build
   Compiling kvm v0.1.0 (file:///D:/KVM/kvm)
src\vm.rs:22:27: 22:36 error: no method named `enumerate` found for type `std::vec::Vec<u8>` in the current scope
src\vm.rs:22         for (i, c) in prg.enumerate() {
                                       ^~~~~~~~~
src\vm.rs:22:27: 22:36 note: the method `enumerate` exists but the following trait bounds were not satisfied: `std::vec::Vec<u8> : std::iter::Iterator`, `[u8] : std::iter::Iterator`
error: aborting due to previous error
error: Could not compile `kvm`.
 
@RohanJhunjhunwala it will not compile
 
rust is hurting my brain
 
@LeakyNun ok, go ahead remove the modifiers
*modifiers
 
@RohanJhunjhunwala done
 
@LeakyNun k
 
7:20 PM
@trichoplax I want to do this, but I'm not sure how. Lets say I have a function I didn't write, but I'm pretty sure it always returns a Positive integer
should I add that declaration?
what if it doesn't?
 
I see the risk
 
at bare minimum, adding a trait will simply require an if statement
 
Also would you want conditional hints? Again, more power and more risk...
 
what do you mean by "conditional hints"?
 
7:22 PM
@RohanJhunjhunwala My IDE is annoying me with the nested class; can I move it outwards?
 
@MartinEnder finally! out variables!
that was so annoying
 
:O moar golf opportunities
 
I'm always genuinely impressed by how much (and how usefully) this language is still developing.
 
> Rust does not have the “C-style” for loop on purpose. Manually controlling each element of the loop is complicated and error prone, even for experienced C developers.
 
@NathanMerrill pattern matching, tuples (!), local functions and digit separators.
 
7:25 PM
ಠ_ಠಠ_ಠಠ_ಠ
 
@Sherlock9 nope
and still not here actually, I'm leaving again
 
(Well, I guess both serious discourses are finished, if not, say.)
 
I'm pretty sure that there are going to be 2 steps in function resolution. Step one: determine all functions that are valid. This will take Traits into account. Step two: determine which function to call, which will not take traits into account.
:P
 
@LeakyNun as in a another file or as in two classes in the same file?
 
@RohanJhunjhunwala the latter
 
7:28 PM
@LeakyNun ok, I like the latter better
 
(Well, one is not.)
 
@RohanJhunjhunwala Would you like it below or above?
 
@NathanMerrill Actually I'm not sure if my vague idea of changing traits conditionally wouldn't just be the same as your original idea. I suppose I was thinking of something like a preprocessor but hadn't really thought it through
 
@LeakyNun so its easy to do java Silos.java whatever.txt without needing any other files
@LeakyNun both work
 
@RohanJhunjhunwala I'm asking you
 
7:29 PM
@LeakyNun below
 
@RohanJhunjhunwala done
 
therefore, if I do allow a class to do myFunc(Int) and myFunc(Int[Positive]), then calling them has to be explicit
 
@RohanJhunjhunwala Never mind, I reverted it, the dependencies are more annoying
 
7:30 PM
Are traits a fixed part of the language, or user definable? If someone had some reason to, could they introduce Int(Even)?
 
(Well, ping me when the discourse is finished, okay Leaky Nun, Rohan?)
 
@trichoplax user definable
 
Interesting
 
the declaration looks similar to:
trait Positive for Int {
	Int.get() > 0
	Positive + Unsigned
	Unsigned + Positive
	Negative * Negative
	Positive * Positive
	Positive - Negative
	Positive - Zero
}
(still not completely sold on the syntax)
the first line indicates a check that assigns a trait, and the rest of them define functions that also assign traits
 
@RohanJhunjhunwala Never mind, I'm refactoring those also
 
7:33 PM
that said, Trait checking is lazy. If a particular function requires a Positive trait, then it'll step backwards through the code to figure out if it is positive
 
@NathanMerrill So there's a long list of checks to determine whether the trait is maintained during any given operation, but none of it needs to be checked at runtime?
 
@LeakyNun kk
@LeakyNun be sure to document any wizardry
 
yep. Basically, it'll go back and say "oh, there was multiplication here! Was it a Positive * Positive or Negative * Negative?
 
@RohanJhunjhunwala I basically left the features unchanged
 
@LeakyNun ok
@LeakyNun just if I had some more features, explain to me how to do it
 
7:35 PM
@RohanJhunjhunwala Next time, print your debug messages to STDERR
 
@LeakyNun ok
@LeakyNun the issue is that System.err.println() isn't thread sage
*safe
 
I see
 
I should use it more though for debugging... it implies a temporary patch that will be removed
 
@NathanMerrill I can imagine this leading to metaprogramming, with most of the work being done in the compiler
 
for sure. It'll certainly be turing complete
 
7:38 PM
Nice :)
 
@RohanJhunjhunwala I'm also removing the global variables arg and interactive
 
one of my goals here is to remove the "nested layers of checks". For example, lets say I have a class with a data structure, and I need to remove an element. I'll likely check to make sure its empty, then call "list.remove()`", and then the list itself will also make the same check
when in all reality, that second check (and often times, the first) is unnecessary
 
Did coldgolf change his name to TheBitByte?
 
yup
 
kk
@Downgoat found your nephews again
user image
5
 
7:42 PM
...which is actually a really good reason to allow Trait overloading
 
@LeakyNun interactive is important though
 
@RohanJhunjhunwala I mean, I'm making them local
 
@LeakyNun ok, but you'll need to pass them on to methods...
 
@RohanJhunjhunwala yes
 
fun pop(list:List[NonEmpty]) vs fun pop(list:List)
 
7:43 PM
@NathanMerrill So you have a version of a function with checks, and another without?
 
Leafgoat:
 
hmmm...the return types would be different
 
@EᴀsᴛᴇʀʟʏIʀᴋ >:| stalker
 
@NathanMerrill Maybe not always that way, but I was thinking if there's a trait like non-zero
 
7:45 PM
fun pop(list:List<T>[NonEmpty]): T vs fun pop(list:List<T>): Optional<T>
@trichoplax that'll definitely be a trait. It'll be required on the divide function
 
@Downgoat +1 upgoat on tha tavatar, although a more elaborate one was posted earlier
 
Will the compiler automatically apply all implied traits if the programmer applies a single trait?
 
@Downgoat did you like your nepews?
 
@trichoplax traits are lazy. I only see if they even exist if a function requires one
 
@RohanJhunjhunwala they are nice but a little annoying when you forget to bring tin cans to their birthday party
 
7:47 PM
@Downgoat not those nephew your real nephews! Look at the starboard
 
^ those one?
 
ik
 
aka, I may call a = Math.abs(b), but the compiler won't actually detect that a is Unsigned unless a function needs a particular trait for that variable
 
7:49 PM
@NathanMerrill Ah of course - you did say. So if and when the compiler finds it needs to check for a particular trait, will it be able to infer one trait from another (say non-zero from positive to avoid working back any further?
 
yep.
That'll be in the Trait definition
Specifically, in the NonZero trait
I'd also like to allow additions to existing trait rules, but that often requires the same sort of trust that we were talking about before
 
@EᴀsᴛᴇʀʟʏIʀᴋ I did not know goats could be that adorable.
 
@DJMcMayhem ಠ_ಠ
 
So is that dependent on the programmer including positive in the list of causes (wrong word?) of the non-zero trait? Presumably the compiler can only work with what is defined there?
 
correct
 
7:52 PM
 
I'm not sure of what a good word is for "causes". I've considered "Rules"
 
@Downgoat Chrome is borked for me right now, so it's all purple and green
 
D:
 
I mean, theoretically, the syntax isn't too tough to extend a trait
 
7:54 PM
extension for NonZero {
// blah blah
}
It'd be similar syntax I'll use for extension methods on classes
It just means that I have to trust that Odd implies NonZero
unless I can prove it somehow at compile-time
 
@Dennis Could you pull brain-flak when you've got the time?
 
Ok, so, in summary, I will use traits when resolving functions. It makes sense, especially when doing operations like pop. If users want to mess their code up and have the two functions do something completely different, then I'll just never hire them
 
@NathanMerrill "Prerequisites" comes to mind, but that would only mean necessary, not necessarily sufficient. I guess in some cases not all of them will be necessary (eg. either Positive or Negative is sufficient for NonZero) so maybe something that means "Sufficiencies" but sounds better...
 
if any of the rules is true, than we assign the trait
Prereq is another good option
 
8:05 PM
@NathanMerrill What happens if a trait requires two other traits (so just using Any is not enough to define it)?
 
@trichoplax Well, most of the statements are boolean operations, so you just && them
all logical operators work
er, maybe they aren't
 
Oh I see - the list of "sufficiencies" doesn't have to be a list of single traits? It can be a list of logical expressions involving traits?
 
@RohanJhunjhunwala See this
0
A: Variable Prime "Twins"

Leaky NunS.I.L.O.S, 205 bytes GOTO b funce n = p p - 1 f = 1 lbla f * p f % n p - 1 if p a return lblb readIO s = i readIO i - 2 lblc i + 1 p = i GOSUB e F = f p = i p + s GOSUB e F * f if F g GOTO h lblg printInt i lblh i - 2 if i c Try it online! Takes 15 seconds although it is quadratic complexit...

I said that it takes 15 seconds
After my optimization, it takes no time
 
I'd like to come up with a good formal syntax of what it would look like, but I'm not entirely sure of what my use cases are
like, for example, I just thought of TraitA + (TraitB && TraitC)
 
8:11 PM
I suppose you want it as flexible as necessary but not more so, to introduce only as much risk of confusion as necessary...
 
question: what is @Override in java?
 
also, I do allow boolean operator overloading...so not sure how that's supposed to work
 
So you could overload the way the traits are defined!?
 
hm...maybe I won't allow for boolean operator overloading. It was a cool idea, but it won't actually work in the case I was thinking
I wanted to be able to do iter1 and iter2 to zip the two iterators
actually, that could still work
 
So you could say
for x in iter1 and iter2
 
8:17 PM
yeah
 
if you're not going for golfy, would it be more readable to explicitly either zip or join?
I'd read it as covering everything in both iterators, but I'd have difficulty guessing the order of elements
Not sure if join is the right word there...
zip or concatenate
 
by join you basically mean [1,2,3] and [4,5,6] -> [1,2,3,4,5,6]?
yeah
concat
 
yeah
 
you are right, and could mean either one
 
If it has a fixed meaning, getting used to it will be part of learning the language, but if it's user definable reading other people's code could be painful ;)
 
8:21 PM
I'd likely use .then() for concat.
but I make and do zip() then I will also make it user definable
all magic should be replicatable
 
I recommend magic in moderation...
 
is there another good use case for wanting to do and that wouldn't work with bool magic methods?
 
Not sure
I suppose it would be something where the use case you want isn't the only use case for and
 
yeah, given the fact that logic is kind of critical to Traits, I think I'm going to not overload magic methods
 
Traits sounds like quite a big step forward in itself, which I guess will come with lots of unexpected problems anyway. Maybe it would be best to give the language time to be used and show up bugs before adding much beyond traits?
 
8:29 PM
yeah
I realized what was wrong with my above syntax
trait Positive for Int {
	Int.get() > 0
	Positive + Unsigned
}
the first line returns a truthy/falsy value
the second line returns an Int
 
These traits seem very tough to implement. How are you going to prove theorems about the values in the programs?
 
When required, move backwards to identify if any operations have applied the trait
 
Writing a formal verifier is likely harder than implementing all of the rest of the language combined.
 
it'll start simple. I won't look into functions, I won't consider loops/if statements that may not be executed
 
@RohanJhunjhunwala Can you come up with a program that tests every functionality?
 
8:39 PM
@NathanMerrill sorry to ask the painfully obvious question, but are you writing a language?
 
@Downgoat t's all reddit's fault
 
cool! language name, repo, availability?
 
its called Elegance, and I've been defining it for a while now )
 
8:40 PM
yeah, I've seen you talking about it
 
I've got a very basic parser right now
I'm currently in the Parse->data structure step
 
it sounds interesting, also sounds like you're doing a good thing
 
CMC: Find me a worthwhile Vim tutorial
 
after that, type checking, and then after that, it'll be transpiled to C++
then, after that, lots of bug fixing, and bootstrapping my own transpiler
 
8:42 PM
@ΛεγίωνΜάμμαλϠΨΠʹ type vimtutor in your shell, it's a tutorial
 
wow, fantastic
 
compiling sounds... painful
I'm trying to write a compiler to TI-84 assemly (Z80?), and it's a complete pain
 
to C++? That's easier than other compilation targets
 
And also, I'd be happy to answer any questions you have.
 
8:43 PM
@NathanMerrill oh, right
 
the higher-level the compilation target, the easier the compilation
 
true
isn't c++ compiled as well?
 
C++ is an odd target as it's an interoperability nightmare.
 
@DJMcMayhem Fifth time was the charm. Pulled.
 
8:45 PM
@feersum interoperability could you define that? google gives healthcare stuff
 
You can't link C++ programs compiled with different compilers.
You can't link C++ programs compiled with different compiler flags.
 
does C deal with the same problems?
 
No, C is the opposite.
 
also, what do you mean by "link"?
you referring to the linker?
 
@Dennis what do you mean? Did it not work 4 times?
 
8:47 PM
dennis-home:~$ tioupd brainflak
fatal: Cannot change to '/opt/brainflak': No such file or directory
dennis-home:~$ tioupd Brainflak
fatal: Cannot change to '/opt/Brainflak': No such file or directory
dennis-home:~$ tioupd Brain-flak
fatal: Cannot change to '/opt/Brain-flak': No such file or directory
dennis-home:~$ tioupd brain-flak
fatal: Cannot change to '/opt/brain-flak': No such file or directory
dennis-home:~$ tioupd Brain-Flak
From github.com/DJMcMayhem/Brain-Flak
   b18ae64..e667e96  master     -> origin/master
 
Yes, but more generally, you can't have the code call the other code.
 
Huh. Weird
Thanks!
 
@DJMcMayhem Please note the spelling errors.
 
@RohanJhunjhunwala Finally I can sleep.
It was fun, thank you.
 
@feersum what? you're saying that this and every other similar library is written in C?
 
8:50 PM
Haha. Crap, it didn't work the way I intended... I'm probably gonna need you to pull again sometime soon...
 
I think that one's written in C but I don't know for sure.
You can write a library implementation in C++, but if you want it to be usable by languages other than C++, you have to make a C wrapper.
 
huh, interesting
why is C++ this way?
hmm, found an SE post
53
Q: Why does C provide language 'bindings' where C++ falls short?

smeebI recently was wondering when to use C over C++, and vice versa? Fortunately someone already beat me to it and although it took a while, I was able to digest all the answers and comments to that question. However one item in that post keeps being addressed again and again, without any kind of ex...

 
@DJMcMayhem No problem.
 
anyways, a major advantage of C++ over C is the existence of classes. I know I could compile away classes, but C++ does a lot of optimizations based on the classes AFAIK that wouldn't be able to replicate
 
@LeakyNun sure, you can use the sample proograms
 
8:59 PM
why Java IDEs are so bloated ;_;
 
it is java
 
to provide you with autocomplete
 

« first day (2037 days earlier)      last day (2792 days later) »