DO READ OUT #1
DO WRITE IN #1
Ask the right questions to secure the right INTERCAL talent among an increasingly shrinking pool of talent.
INTERCAL is a unique esoteric computer programming language, first developed in 1972 by Don Woods and James M. Lyon at Princeton University. Its name is a parody, derived from "Compiler Language With No Pronounceable Acronym". Unlike conventional languages, INTERCAL's syntax is intentionally obfuscated and counter-intuitive, designed to be as different from traditional languages as possible. This unusual approach has made it a cult favorite among certain programmers, despite its impracticality for everyday coding. The original reference manual and source code can be found in the book "The INTERCAL Programming Language Revised Reference Manual" by Woods and Lyon.
The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.
The 'PLEASE' statement is used in INTERCAL to denote politeness. If the code is not polite enough, it may not compile. However, if it's too polite, it may also not compile.
INTERCAL uses a unique way to perform arithmetic operations. For example, addition is done using the operation 'Mingle' and multiplication is done using 'Select'.
In INTERCAL, 'spots' represent 16-bit integers while 'tails' represent 32-bit integers. The difference lies in the size of the integer value that they can store.
INTERCAL supports two basic data types: 16-bit integers and 32-bit integers. These are represented as 'spots' and 'tails' respectively.
In INTERCAL, you declare a variable using the PLEASE DO ,1 <- #10 statement, where ,1 is the variable and #10 is the value assigned to it.
Even with a language as obscure as INTERCAL, a developer still needs to be able to communicate effectively with their team, managers, and potentially clients.
While INTERCAL is the focus, having experience with other languages can be beneficial for understanding programming concepts and for potential cross-language projects.
INTERCAL is not a widely used language, so a candidate who has learned it shows a willingness to learn and adapt to new technologies.
Despite INTERCAL's reputation for being difficult to read and write, a qualified candidate should still strive for code that is as clean and efficient as possible.
Programming in INTERCAL can be challenging due to its unconventional design. A good candidate should be able to solve problems effectively using this language.
INTERCAL is a unique and esoteric programming language. A qualified candidate should have a deep understanding of its syntax, semantics, and peculiarities.
The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.
INTERCAL has several unique features like its politeness concept, unusual arithmetic operations, and unconventional control structures like 'COME FROM'.
INTERCAL does not have traditional error handling methods. If an error occurs, the program either crashes or produces incorrect output.
The 'STASH' statement is used to push the value of a variable onto a stack, and the 'RETRIEVE' statement is used to pop a value off the stack and into a variable.
INTERCAL doesn't have traditional loop structures. Instead, you use the 'COME FROM' statement which jumps execution back to a previous point in the code, essentially creating a loop.
The 'DO READ OUT' statement is used in INTERCAL for output operations. It reads values from the variables and prints them.
A skilled INTERCAL engineer should possess a deep understanding of the language, problem-solving abilities, and patience due to INTERCAL's complexity. Red flags include lack of knowledge about esoteric programming questions or frustration with intricate coding tasks.
DO READ OUT #1
DO WRITE IN #1
PLEASE DO ,1 <- #10
DO READ OUT ,1
DO ,1 SUB #1 <- #10
DO ,1 SUB #2 <- #20
DO ,1 SUB #3 <- #30
PLEASE READ OUT ,1
PLEASE READ OUT ,2
PLEASE READ OUT ,3
DO ,1 SUB #1 <- #10
DO ,2 SUB #1 <- #20
DO STASH ,1
DO STASH ,2
DO RETRIEVE ,1
DO READ OUT ,1
DO RETRIEVE ,2
DO READ OUT ,2
DO ,1 SUB #1 <- #10
DO ,1 SUB #2 <- #20
DO ,1 SUB #3 <- #30
DO ,1 SUB #4 <- #40
DO ,1 SUB #5 <- #50
DO READ OUT ,1
DO READ OUT ,2
DO READ OUT ,3
DO READ OUT ,4
DO READ OUT ,5
DO ,1 SUB #1 <- #10
DO ,1 SUB #2 <- #20
DO ,1 SUB #3 <- #30
DO ,1 SUB #4 <- #40
DO ,1 SUB #5 <- #50
PLEASE IGNORE ,1
DO READ OUT ,2
DO READ OUT ,3
DO READ OUT ,4
DO READ OUT ,5
The final few interview questions for a INTERCAL candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.
Optimizing an INTERCAL program is challenging due to its esoteric nature. However, you can try to minimize the use of 'COME FROM' loops, avoid unnecessary 'STASH' and 'RETRIEVE' operations, and balance the politeness level of the code.
INTERCAL doesn’t have traditional conditional statements. Instead, it uses a combination of 'PLEASE DO', 'COME FROM', 'RESUME', and 'ABSTAIN' statements to simulate control flow.
The 'ABSTAIN' statement in INTERCAL is used to disable certain statements in the program. It's a unique feature that allows for dynamic code modification.
INTERCAL does not have a conventional function structure. Instead, you can simulate a function by using a combination of 'PLEASE DO', 'COME FROM', and 'RESUME' statements.
'Mingle' is an operation in INTERCAL that combines two 16-bit numbers into one 32-bit number. 'Select' on the other hand, is used for multiplication operations.
Back-end App Developer
Front-end Web Developer
Full Stack Developer (Java)
Full Stack Developer (.Net)
Full Stack Developer (MEAN)
Full Stack Developer (MERN)
DevOps Engineer
Database Engineer (AzureSQL)
Database Engineer (Oracle)
Database Engineer (General)
Solution Architect (.NET)
Solution Architect (Java)
Solution Architect (Ruby)
Solution Architect (Python)
AI Engineer (Python)
Sr. AI Engineer (Python)
AI Strategist (Python)
Business Intelligence Engineer
Systems Analyst
Mainframe Developer (COBOL)
Mainframe Developer (General)