« first day (17 days earlier)      last day (643 days later) » 

12:29 AM
Hrmph, running 3to2 wasn't enough.
Oh you know what
I think I've been using translate wrong
 
Hey I was thinking: do you really need different types of collections? What if the language automatically detected what collection you wanted?
 
 
1 hour later…
1:55 AM
I'm giving up on PyPy translation.
I'm 99% confident it has to be Python 2 and of course the problem with RPython is that we cannot use most modules
Furthermore, cx_Freeze does not build against PyPy so we can't use that to squeeze some more speed out of a regular old cx_Freeze executable.
So, speed-wise, we're doomed.
We better make up for that in other areas :P
 
@NathanMerrill I wrote up a nearly-complete spec at youth group.
 
sweet
 
Draft of Pytek syntax spec: pytek.starmaninnovations.com/docs/syntax (Updated 2016-10-21.)
5
I'll get the website up tonight.
@quar- @AquaTart ^^
 
Er have you bought the domain
 
@El'endiaStarman did you see my comment about not needing different collection types?
what if there's only a single collection, that dynamically acts as both an ordered array and set
 
2:09 AM
I'm not sure I understand what you mean.
 
only have 1 collection type for all of your needs
a "Collection"
making it "fast" is an implementation detail the programmer shouldn't need to worry about
if you are going to do random access, then behind the scenes, it'll do an array
if you are going to do containing checks, then it'll do a set
if you do both, then it'll do both
 
But a set could be infinite.
 
? we are supporting infinite sets?
how do you define them?
 
\N is a built-in for [1, 2, 3, ...].
There will be a function \cycle that turns finite lists into infinite cyclic ones.
 
why not just use generators?
 
2:18 AM
@AquaTart I'll be using pytek.starmaninnovations.com. Though I could go ahead and buy pytek.org...
@NathanMerrill That's essentially what they are.
 
right, but I mean representing them as generators
not as an array
 
Not sure what you mean.
 
your language needs to define a list of types. I'd argue that instead of representing \N as an array, that you should represent it as a generator
 
@NathanMerrill Set-builder notation
@El'endiaStarman Don't buy pytek.org until we are really sure about the name
pytek.starmaninnovations.com is good enough for now
 
@AquaTart oh, so if I were to do \type(\N), I wouldn't get array?
(assuming \type is a thing)
 
2:22 AM
@NathanMerrill \N is a set.
 
You'd get something like type:infinite-list.
 
{}
 
is it iterable?
 
Absolutely.
 
if its iterable, then its not a set
 
2:23 AM
I never called it a set or an array!
It's an infinite list!
 
I know :)
 
I didn't think it would be iterable.
 
Why wouldn't it be?!
 
@NathanMerrill But it could be a well-ordered set.
 
regardless, I'm still in favor of a single "collection" object
 
2:24 AM
Hm.
 
Hmm. @AquaTart, what do you think of representing tuples, lists, and sets with [] notation?
 
We'd have to use a different symbol for bitwise or.
But maybe.
 
Anonymous
Sets should be {}
 
@Mego We've abandoned that :P
I'm pretty sure {} will be code blocks now.
 
Anonymous
And really there's no difference between a tuple and a list. In Python, the only difference is that tuples aren't modifiable.
 
2:25 AM
@Mego Disregarding what is traditional, tell me why.
(Traditional with respect to programming.)
 
Anonymous
@El'endiaStarman Really because of math. It's intuitive.
 
@El'endiaStarman that argument doesn't hold for []
 
I do feel like this would be a lot of optimizing for the interpreter.
 
the difference between [] and {} is arbitrary
 
It would have to analyze the entire program to see if it should make something a list or a tuple internally.
 
Anonymous
2:26 AM
How do you decide if [1, 2, 3, 4, 4] is a set or a tuple?
 
@Mego by how you use it
 
@Mego How often do you actually use the immutability of a tuple?
 
@El'endiaStarman optimization
faster
 
Anonymous
@El'endiaStarman Mostly I get annoyed while working on Seriously and cast it to a list
 
....ok
 
Anonymous
2:27 AM
Because Seriously doesn't have tuples
 
Yeah, but speed is not of primary importance. C would be the best choice for that.
 
Anonymous
:P
 
Anonymous
Rule #1: don't worry about speed yet
 
I really don't care very much about speed.
 
Anonymous
Premature optimization is the root of all evil
 
2:28 AM
TIL premature optimization == the love of money.
 
@El'endiaStarman you have to ensure we aren't making our big-Os worse
 
Anonymous
Make it work, make it right, then make it fast
 
Anonymous
So far step 1 is still lacking :P
 
its totally fine to not care about the constants
 
@NathanMerrill Most programmers don't care all that much about big O.
 
2:29 AM
@Mego I'm trying to be very careful we don't make any design choices that make making it faster impossible
 
A language that makes a O(n) any worse will never see the mainstream world
 
[shrug] Not my problem right now.
 
it has to be. Consider you store everything as an array, and you write a simple program that does lots of contains() checks
 
Anonymous
@AquaTart Design choices have no bearing on speed. It's implementation choices that matter. As long as Pytek is designed well, the implementation can be optimized behind the scenes without changing the design.
 
even if the array is small
 
2:32 AM
@Mego That's what I meant but I've gone semi-insane trying to get PyPy working so my brain isn't operating at 100%
Anyways, thoughts:
The Cython programming language is a superset of Python with a foreign function interface for invoking C/C++ routines and the ability to declare the static type of subroutine parameters and results, local variables, and class attributes. == Overview == Cython is a compiled language that generates CPython extension modules. These extension modules can then be loaded and used by regular Python code using the import statement. Cython is written in Python and works on Windows, Linux, and Mac OS X, producing source files compatible with CPython 2.4 through 3.4. It works by producing a standard Python...
As I understand it this could be used to compile the parser to a Python C module
We'd still need a Python wrapper though.
 
I'll let you guys worry about that. :P
 
Anonymous
Cython is neat but I don't know how much it will improve things
 
Anonymous
Regardless; optimization comes after full, correct implementation
 
*full-enough :P
 
Anonymous
Nope
 
Anonymous
2:34 AM
Optimization is the last step
 
Would you say that Python 3 has been fully implemented?
 
Anonymous
If you're doing something else after optimizing, 90% of the time you spent on optimization is wasted
 
while optimization comes last, design decisions must take possible implementations into account
 
@Mego That's true of manual optimization, not "picking an implementation of Python that will optimize our code for us"
:P
 
Anonymous
@AquaTart We can deal with that after we get a working interpreter :P
 
2:36 AM
OK, OK.
By the way, \print(\factorial(\factorial(3))) totally works and ouputs 720. That's nice.
 
Anonymous
For example, I still haven't bothered with optimizations in Seriously 1 (aside from the minor ones I've done so I can do rigorous tests that will complete before the heat death of the universe, like basic memoization)
 
I'm going to clean up this code a bit then I think we should do variables next
 
I was thinking operators, actually.
Those are harder, in my mind.
 
Anonymous
I'm looking at the c9 ide now :P
 
Anonymous
If you want to do operators, you need a full precedence table
 
2:38 AM
yep
 
yup
TBD :P
 
That's why I was thinking variables first :P
Python handles scope with a list of hashes, so I figured we'd do something similar
 
Anonymous
Yeah variables first makes more sense to me
 
...do you guys mind if I put my foot down and say we are not designing/implementing this by committee? :P
 
Go ahead
 
Anonymous
2:40 AM
Sure, you can be BDFL. But we're going to harass you and make fun of you if you override our obviously smart ideas :P
 
lol
You can be assured that I will take every idea into consideration.
 
Anonymous
I may have missed it somewhere - do you have a design doc anywhere? The transcript doesn't count.
 
I posted a syntax spec earlier.
Bolded message.
 
Anonymous
 
Anonymous
y u no pin
 
2:41 AM
37 mins ago, by El'endia Starman
Draft of Pytek syntax spec: http://pastebin.com/pqwRUN5K
Well, 'cause it's only a draft. :P
I typed that up while at youth group.
 
Anonymous
Still, it's better than the transcript
 
@El'endiaStarman I wasn't trying to act as a committee, sorry
 
@NathanMerrill I wasn't referring to you at all there, actually.
 
oh, I'm just very opinionated
 
I was talking about both quartata and Mego saying "variables next!" and me saying "operators next!". :P
 
2:43 AM
and I like pushing them
 
@El'endiaStarman What's your plan for parsing the operators?
 
Anonymous
If you want to work on operators, then we need a full precedence table
 
@NathanMerrill To be honest, I don't mind that very much. If I/we make a poor design choice, it's good to have someone call us out on it.
 
Anonymous
And while you're working on said table, we can sneakily work on variables :P
 
@Mego I'm going to implement + and * first, and that's it.
 
Anonymous
2:44 AM
Easy enough
 
Anonymous
Shunting yard algo
 
Oh gosh no, let's not work on the interpreter at the same time.
Yeah, basically.
I just have to integrate it into the current setup.
 
Anonymous
Modularity means that simultaneous work can be done :P
 
@Mego Please don't.
 
Ostensibly, but I will be distracted by trying to keep an eye on your work.
 
2:45 AM
If we fuck up the parser @El'endiaStarman is the only one that can fix it
 
Anonymous
I was joking :P
 
this is why we need git
 
So we don't want to get on the bad side of Lord of the Parsers
 
Anonymous
^^ is there not a github repo?
 
There will be when we have something good.
 
2:46 AM
There will be one.
 
Anonymous
We should make one and put the spec in it for now
 
@AquaTart I won't wait until "something good". I'll have something on GitHub by next week for sure.
 
Anonymous
GitHub's markdown editor beats the pants off of pastebin :P
 
It just so happens that the current C9 setup is really convenient for collaborative work.
 
@El'endiaStarman Right, but if he's working locally, then there's no "keeping an eye" :)
 
Anonymous
2:47 AM
Besides, we could be able to understand the parser
 
Anonymous
It might take some effort and alcohol, but it's certainly not impossible to understand
 
@El'endiaStarman Have you taken a look at Python's grammar? (It's up somewhere). Might be good for operator precedence
 
Ehhhh....still iffy. I have a fairly good idea of how to modify the parser for infix functions, but I might have to change other stuff to make it all work.
@Sp3000 Yeah, I'll take a look at their stuff when it comes time to implement all the operators.
 
Well, I mean, even for + and * ...
shrugs
 
I'm fairly sure 1 + 2 * 3 is 7 and not 9. :P
 
2:50 AM
Are you sure you don't want a parser generator for this? :P
 
Do you think a parser generator would properly handle [1,2,3] \pairwise(+) [4,5,6]?
(And besides, I want the experience.)
 
@El'endiaStarman Are you sure you can't just isPossible [\+\*]. isComplete true?
It seems like the way to go.
oh boy I can't wait until we get to the part where we parse chains
 
Chains are essentially operators, in my mind.
 
Anonymous
Man looking at the parser is making me glad I chose to make Seriously a stack-based imperative language
 
@AquaTart That won't work because the parser will treat those like a child node, and grab the next item as its child, but have no way to grab the previous element to make it a child of the operator node.
 
2:53 AM
Parser generators can handle whatever - but I think your example would be done differently to what you have in mind
 
In the meantime, @Mego and @AquaTart, we will need unit tests.
And you guys can add functions to pytek_functions.
 
@El'endiaStarman I have some test cases already.
I'll add a couple more.
 
hey, what's a common use case for a queue
and are we going to support them?
 
@NathanMerrill Plastic utensils in restaurants.
@NathanMerrill Probably.
 
are they going to get their own syntax, or simply be a class?
 
3:00 AM
@AquaTart The test#.pytek files, right? Any way we could set up a single file that has all of them, with inputs and expected outputs, and have a script that goes through and checks each input and output with the expected output, and notifies us when a test fails?
Probably just a type. queue:.
 
ok. I'd recommend making your queue a dequeue (you can push/pop on both ends efficiently)
 
I probably would've done that, but I'll be sure to definitely do that.
 
@El'endiaStarman Sure
 
I really need to write a function that prints the AST tree.
 
oooh, what if collections could define an "ordering"
and if you did, it would automagically keep the elements in order behind the scenes
(basically, turn it into priority queue)
 
3:10 AM
That could be useful. ordered:x = [5,3,6,1] would result in x being [1,3,5,6].
 
it wouldn't just be a function either
if you appended to the array, it would maintain its order
 
ensure that you allow for custom orderings in your design though
 
I think I'd use the ordering method of the type of the elements in the list.
If one is defined, that is.
 
right, but I've often wanted to order a list of objects by something other than its natural ordering
 
3:13 AM
Oh right, a key.
hmm, yeah
I'll think on that.
 
@El'endiaStarman Hmm, I don't really want to invoke another subprocess for the unit tester.
Would there be a way to add a function that terminates execution and makes .run() return the argument given to it?
 
Not sure what you mean?
 
OK.
So you know how once you have the AST you execute it with .run()
 
Can we add a Pytek function that makes .run() immediately return the argument given to the function
 
3:22 AM
Like an identity function?
 
Right but currently .run() doesn't return anything
 
oh, another thing: I'd strongly recommend static typing, but implied static typing
 
Oh right, hmm.
 
I want to be able to do \test(<code>) for the unit test codes and just be able to do assert(x.run() == foo)
 
@NathanMerrill Typing will be Python-esque if no type identifier is given.
 
3:24 AM
This way I don't have to use Popen.
 
@El'endiaStarman I'm saying to go one step further than python. Variables should always be of the same type
 
I can literally just take every file in tests/ and do pytek_parser.AST_parse(blah).run()
 
aka, a=1;a="var"; throws an error
 
@NathanMerrill Why?
 
No, I like the ability to change a variable's type.
@AquaTart It's not that bad... :P
 
3:25 AM
@El'endiaStarman Yes it is
 
it prevents a host of errors, and allows better optimization (I know we aren't working on that know, but you have to consider it for the future)
 
That's why I allow static type enforcement through the use of type identifiers.
 
I can't think of a use case for wanting to change a type of a variable
unless you're trying to conserve the number of variables you are using (which is a terrible idea)
 
@NathanMerrill I can but probably not for the reasons you're thinking
Static typing = collections have to be of one type
nasty
 
> Many languages (especially the ones designed for other people) have the attitude of a governess: they try to prevent you from doing things that they think aren't good for you. I like the opposite approach: give the programmer as much control as you can.
 
3:30 AM
@El'endiaStarman that's the entire reason C is a terrible language
they let you do anything you want, and will only throw an error when it has to
 
And it's also one of the most powerful.
What's your favorite language(s)?
 
only because its fast
Python
 
Huh, wouldn't have expected that, actually.
 
what is pytek m8
 
@NathanMerrill But C is statically typed.
 
3:32 AM
@AquaTart: On Linux, how do I search for a specific phrase in files?
 
aqua tart... nice anagram
 
@El'endiaStarman grep
 
right, but C also lets you access an array out of bounds
 
@NathanMerrill That has nothing to do with static/dynamic typing.
 
@El'endiaStarman right, but the mantra of "give the programmer as much control as you can" is the reason they don't do bound checking
(that and efficieny)
 
3:33 AM
Well, C is also a pretty old language.
They didn't terminate strings automatically either...
 
I actually think that C is a great language, because it has a very good focus on what it wants
but from a design standpoint, its pretty out of date :)
 
strong typing is good
so what does this pytek thing do that haskell can't?
 
Hmm. Let's put it this way: if a design detail is intended to prevent bad things, it's probably a good idea. If it's intended to prevent "Why would you do that?" decisions that aren't intrinsically good or bad, then maybe it's not needed.
 
@quintopia What does Haskell do that assembly can't?
:P
 
@AquaTart loads :)
 
3:36 AM
But to answer your question, you can look at our spec.
And the transcript
 
i just did
 
@El'endiaStarman I can think of plenty of potential of bad things that could happen from allowing dynamic typing.
 
well obvs not the whole transcript...that's too many things. I'm begging for a gistier gist
 
@NathanMerrill Python developers seem to do just fine with it.
 
I've run into bugs where I've assumed the wrong type in an array
and I imagine many other python developers have as well
 
3:37 AM
@quintopia The first few pages are probably the most useful with regards to getting an idea of what I was thinking when I started designing the language.
 
@NathanMerrill This is degraded into a dynamic vs static typed argument, which is one that people have been arguing about since the dawn of time when dinosaurs roamed the land
There's no easy answer
I'm favoring dynamic typing if only because it's easier to write short code for
 
@AquaTart fair point
 
@El'endiaStarman what does it mean: - \funcName= will set the first argument in (arguments) to the return value of the function.
 
We are providing static typing so people who don't like bugs can use that if they need to
 
but I'd argue actually for what facebook does
 
3:39 AM
@quintopia Intended to be an analogue of += and the like.
 
oh. makes sense.
 
everything you do implies a type
so, if you have a function(a){return a.someVal}, then the type of a would be has(someVal)
or something along those lines
 
4:14 AM
@El'endiaStarman Welp, I'll leave you to that "distraction-free coding" you were talking about ;)
 
@AquaTart how bout some distraction-free gaming
 
@AquaTart Haha, thanks. I'm gonna be Skyping with my fiancée soon though, just as soon as I finish this argparse thing.
 
If there's people with nothing to do right now (since Pytek development is suspended due to Skype), I am welcome to hear your suggestions for my own language. Just be warned: it doesn't exist yet.
 
4:37 AM
You can now run Pytek files like python3 pytek_main.py ../tests/test5.pytek or like python3 pytek_main.py -c "\print(\add(2,2))", and -c can be --code.
@AquaTart: ^ yay
I think unit tests should be run with the -c option so we don't have to make separate files for all of them.
 
 
6 hours later…
10:20 AM
Coming soon: everything.
 
 
6 hours later…
4:28 PM
@El'endiaStarman Done except Pytek is throwing a strange decoding error with -c:
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "../src/pytek_main.py", line 19, in <module>
  File "/usr/lib/python3.4/codecs.py", line 319, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 24: invalid start byte
 
 
2 hours later…
6:12 PM
@El'endiaStarman -1 for including jQuery
 
 
3 hours later…
9:16 PM
I was thinking it would be nice if we made a preprocessor that ran before the code was parsed.
Have stuff like @define @include and what not
 
@AquaTart Did you edit unit_tester or just run it from the terminal?
Nevermind, it's not working for me either.
I hate it when things break overnight.
 
9:55 PM
It's something wacky with Unicode
I see you changed it back for now
 
I dunno what happened with unit_tester if you changed it.
 
?
Aren't you the person who changed it back to not use -c?
Or do we have poltergeists?
 
I did nothing with unit_tester.py.
 
wtf
 
Last night or today.
Maybe @Mego is to blame?
 
10:05 PM
Nope looking at it right now and it has orange highlighting
Anyways.
 
unit_tester.py? All purple, which makes sense, since you were the one that made it.
But yeah, I'm gonna go ahead and make sure the -c thing absolutely works.
 
.........poltergeists.
 
Alright, fixed.
Well, in the terminal, at least.
Put quotes around code if you use -c.
 
10:10 PM
OK.
 
Anonymous
@El'endiaStarman I didn't do nothin
 
Anonymous
I just looked around the code for a few minutes last night
 
Definitely poltergeists then.
 
Anonymous
 
11:02 PM
@El'endiaStarman Should change the room tags to
:P
 
room topic changed to Pytek: Discussion for this in-development language [awsum] [language-design] [poltergeists] [pytek]
 
perfect
What an accurate summary.
 
New potential name: Polty. Or Poltek.
 
Hmm something is going wrong with unit tester
 
Taking a look...
 
11:10 PM
Pytek is just not outputting anything: b''
 
Okay. I think that what happened was that when you do -c in the terminal, you have to put the code in quotes because otherwise bash tries to do stuff with \p or whatever. With this method, using Python to do it, the code has already been "chunked" into its own argument.
 
Oh, OK.
Yep, all good.
 
Another thing to consider: also toss in code that should fail, and the expected outputs would be the expected errors.
For instance, \ print is a syntax error.
 
Made the output a little prettier
 
Nice, though it's a little harder to see which ones succeeded and which ones failed at first glance.
I'd prefer to make successes be invisible. As they say, no news is good news.
 
11:20 PM
K, done.
 
Awesome, thanks.
 
I guess I'll delete the tests directory
 

« first day (17 days earlier)      last day (643 days later) »