5,564 reputation
31445
bio website chrisaycock.com
location New York, NY
age 31
visits member for 2 years, 5 months
seen 18 hours ago
stats profile views 360

I do high-frequency trading, mostly in C++ and q/kdb+. I am a pro tem moderator of Quant SE. My views are my own and do not reflect the same of my employer.

My favorite answers:

Separating the wheat from the chaff

How much data is needed to validate a trading strategy

Time-series similarity measures

Column-oriented storage for tick data

A new programming language can only succeed if it capitalizes on an emerging frontier


May
10
comment Writing a Compiler Compiler - Insight on Use and Features
I assume you've seen ANTLR 4. That does a really nice job of simplifying things. Anyway, about the one thing I would really want is an automatically created (and filled) AST. I.e., I don't want to have to define my own since it will just mirror my grammar anyway. If I could list my productions and then know that I'll get an AST back (with line numbers for error reporting!) then I can get to work a lot faster.
May
10
answered Is there any way to get faster at solving bugs? I've just had a warning from my boss
Apr
1
comment Are “normal order” and “call-by-name” the same thing?
This Wikipedia article states that, in contrast to normal order, "a call-by-name strategy does not evaluate inside the body of an unapplied function". No specific citation is given though.
Mar
28
comment How does understanding computer architecture help a programmer?
@Stargazer712 Now who's advocating computer organization knowledge? ;) Linux uses a linked list of task_struct to store process info. The for_each_task macro at the bottom of sched.h shows how to iterate through this list.
Mar
28
comment How does understanding computer architecture help a programmer?
@Stargazer712 Isn't the PCB part of the kernel?
Mar
27
comment How does understanding computer architecture help a programmer?
@parsifal By overhead, I was referring to allocating on the heap vs merely placing a variable on the stack.
Mar
27
revised How does understanding computer architecture help a programmer?
Since there was enormous confusion from people who haven't studied computer organization...
Mar
27
comment How does understanding computer architecture help a programmer?
@Stargazer712 The segments are code, data (namely heap), and stack. What you're referring to are tiers in the memory hierarchy.
Mar
26
answered How does understanding computer architecture help a programmer?
Mar
26
revised Why can't a compiler avoid importing a header file twice by its own?
Corrected typo
Mar
24
comment Why many programming languages have only 2 data-structures: arrays and hashes?
@DonalFellows Good point. I notice that counter machines require "obscure coding" rather than indirect addressing. As for SKI combinators, how would one represent state changes in that?
Mar
24
revised Why many programming languages have only 2 data-structures: arrays and hashes?
Updated to focus on practicality given the comment from Donal Fellows.
Mar
24
revised Why many programming languages have only 2 data-structures: arrays and hashes?
added 76 characters in body
Mar
24
answered Why many programming languages have only 2 data-structures: arrays and hashes?
Mar
23
comment Why many programming languages have only 2 data-structures: arrays and hashes?
Plenty of languages in the ML family have lists rather than arrays (head/tail semantics instead of random access). Also, q/kdb+ has a table container that mimics an in-memory SQL-like container. And C doesn't have built-in hashes at all. So I think your premise takes a narrow views of what's out there.
Mar
18
comment What is the maximum value of index of an ArrayList?
A computer doesn't have "endless memory"; it has, at most, an amount that can be referenced by the memory-address register. So if you have a 64-bit machine, then you can access 2^64-1 bytes of addressable memory.
Mar
14
comment A good C Variable Length Array example
@MikeBrown The question/answer you link to is asking about cache effects of accessing the stack or heap after the array has been allocated. The OP here (hyde) is asking about performance differences during the allocation. The stack is always faster to allocate on than the heap because it's just a movement of the frame pointer. std::vector can't use VLAs because the frame pointer will have been moved back once the constructor returns.
Mar
14
comment A good C Variable Length Array example
@Lundin Does C++ scale the vector by powers of ten? I just got the impression that Mike Brown was really confused by the question, given the linked list reference. (He also made an earlier assertion that implied C99 VLAs live on the heap.)
Mar
14
comment A good C Variable Length Array example
Why would a std::vector need scales of arrays? Why would it need space for 10K elements when it only needs 101? Also, the question never mentions linked lists, so I'm not sure where you got that from. Finally, VLAs in C99 are stack-allocated; they are a standard form of alloca(). Anything that requires heap storage (it lives around after the function returns) or a realloc() (the array resizes itself) would prohibit VLAs anyway.
Mar
14
revised How were some language communities (eg, Ruby and Python) able to prevent fragmentation while others (eg, Lisp or ML) were not?
typo