1. JS, Python
2. [i know u said 1, but there's so many] JS->Py: Looser type handling, nicer syntax for dicts. Py->JS: Less punctuation, comprehensions
3. I created a hybrid called Pith (https://news.ycombinator.com/item?id=46637033). JS with some nice Python features.
Appendix (Nov 2021)
A version of Python (call it "Pith" [0]) that fixes the annoying things, eg:
no colons
if bool:
# should be
if bool
for thing in things:
# should be
for thing in things
nicer dicts
a_dict['prop']
# should be
a_dict.prop
shorter dicts
a_dict = {'name': 'value'}
# should be
a_dict = {name: 'value'} # like in js
# even
a_dict = {content-type: 'json'} # ooh, ahh !
auto main function
if __blah_blah_blah__ == '__main__' # dunder-struck ?
main()
# should be
# nothing -- it just calls main() if it's there
dict.get(prop) by default
# instead of
a_dict.get('prop')
# it should be like JS that returns undefined or None or something nullish or falsey
a_dict.prop
ternary
v = a if this else b # barf
# should be
v = this ? a : b
# or (to steal from VB)
v = iif(this, a, b)
# maybe fix list/dict-compros, too, while i'm at it
elif? elf? what the helf ?
elif x:
# should be
else if x # like any decent language
W T F-string?
f'{huh}'
# should be
`{huh}` # like JS
len (like it's BASIC)
len(a_string)
# sb
a_string.length
a longer example
# Regular Python | # Pith uses less punctuation
|
def main(): | def main
a_dict = { | a_dict =
'name': 'value' | name: 'value' # maybe use = instead of :
} |
if True: | if true
print(a_dict['name']) | print a_dict.name
elif 1 > 2: | else if 1 > 2
print('ooh') | print 'ooh'
|
main() | # no need to call main()
i also like how JS allows you to call a function before it's defined (but Python doesn't -- why !!!)
maybe add a do/while loop, multi-line comments ###, JS-style regex /reg/ instead of r"regex" blah blah blah
etc, etc, etc
it could be a preprocessor (like the C Preprocessor) that takes Pith and converts it to Python
for JS, take out parens, curly braces, semicolons, etc (make it "look" more like Pith)
i know these changes are fraught with peril, but i don't care (do i?). there's no reason (is there?) that i should be stuck with Guido's or Brendan's design choices [1] (i can make my own :) )
i even had an idea that you could write a program in Pith and it could output either Python or JS (or anything else). that might need a little more thought
[0] "Pith" is prolly already in use by something else, just humour me
[1] that's the bigger idea here -- take a language you like, fix all the things you don't like about it. maybe lisp with fewer parens