NewStats: 3,264,559 , 8,184,100 topics. Date: Wednesday, 11 June 2025 at 02:31 PM 616cu6z3e3g |
(4) (of 4 pages)
![]() |
Donald3d:If it's possible, why not? ![]() |
![]() |
Craigston:Yes, I'm aware of D. We added UFCS to Astro and later found out that D and some other languages use it. ![]() And I actually don't hate C++. I just don't like how I have to keep a lot of wierdness in my brain to command the language successfully. ![]() We probably could use D for the backend, but then D is a managed language, it won't give us the ability to explicitly manage memory resources. Another language we are currently considering is Rust. For now tho, it's C++ for the runtime, Python for other things. 2 Likes |
![]() |
Donald3d:Op said hang, not print. It is an homage to the 99 bottles of beer challenge |
![]() |
Written in Astro let a, b, c, d, e, f = |
![]() |
An event, typically lasting several days, in which a large number of people meet to engage in collaborative computer programming. 1 Like |
![]() |
Craigston:You are right. Astro is like a nephew to Julia. Astro borrows a good deal of Julia and Python Syntax but it also takes useful concepts from Scala, C#, CLOS, Ruby, Go, Java, etc. Infact there is a short list of where Astro borrowed certain concepts. Julia There are a lot of ideas that went into the design of the language. Some stayed, others were discarded, but we promise not to make Astro a complicated load of incoherent features like C++. ![]() Astro goals have been changed several times over the year, cos we don't really have a niche target like most other languages. We just want a nice language that is easy to use and fast to run. But that sounds quite generic, as a result Astro has no concentrated target market. It's in the same camp with Swift. It can be used to write any piece of software, from a website down to an operating system. Of course, you'd need a native compiler implementation of Astro to write an operating system. As time goes on, we might find the niche we are looking for and stick to that. 2 Likes |
![]() |
-------------------------------------------------------------------------------------
|
![]() |
I'm a co-developer of the Astro programming language, originally started by Nypro. Astro language specification has reached version 0.2, but no stable interpreter was written for it until recently due to the constant changes in syntax and semantics of the language. Now after a year of deg the language, we have managed to come up with an interpreter that is near completion (there are still lots of bugs to fix and changes to make) and as co-developer, I felt we need to start promoting the language. No production-ready language has made it out of Africa yet, but we hope to stop this unusual trend with the introduction of Astro. This thread will focus on providing information about Astro until its release. Astro's concise documentation can be found here. It's actually meant for the developers of the language, but since we don't have a proper documentation yet, it's the only place to get a grasp on how Astro syntax looks. The syntax is, however, not final yet, so we make sure we commit every change as they are made. Below are planned features and paradigms of the language (some are not yet implemented): - Procedural - Object-oriented - Fast Performance - First-class Functions (Anonymous Functions, Closures) - Anonymous Types - List Comprehension - Events - Generators - Concurrent Coroutines - Properties - Expression-oriented - Optional Typing - Union Types - Operator Overloading - Generics - Regex - Exception Handling - Multiple Inheritance - Multiple Dispatch - Unified Function Call Syntax - Unicode String - Unicode Identifiers - Algebraic Data Types and Pattern Matching - Type Inference - Package Manager - Meta Programming - AST Macros - Automatic Reference Counting (No tracing GC) Some of these things may not be familiar, but they are actually just big grammars for simple concepts. Unified Function Syntax Call, for example, simply means being able to use dot notation with ordinary functions. So play(music, 'backwards') Can be called using its first argument. music.play('backwards') Questions, comments, criticisms and suggestions are welcomed. Thanks for reading. UPDATE: A lot has changed about the language since the time of this post and Astro now adopts sem ver, so the version shown above is now incorrect as of this update. Syntax and implementation details have changed quite a bit too. 5 Likes 4 Shares |
![]() |
asalimpo:I don't know if you can get a hardcopy in Nigeria, but if you have the means, you can order one from Amazon. |
![]() |
asalimpo:I'm not the op of this thread. I'm thinking of starting another thread instead of hijacking this one. There are just two people working on this and none of us are CS grads. As for wiki or mailinglist, we don't have any yet, at least not until we make the interpreter public. And as for books to read, Dragon Book is staple, but it's quite large and can scare one away, i'm still not done with the book yet, I'm not even half way. My lang/compiler experience comes from a mixture of Dragon Book, videos, articles around the internet, scientific papers and experimenting with interpreters. About the syntax of the language, well I believe the reason you don't find it familiar is because I wrote it in idiomatic Astro. I could have written it in a similar way to Python. Something like this. type Person: Now, compare it with the Python version. The code is now clearer. But Astro is not Python, it has its own way of doing things idiomatically. And saying the syntax is not friendly is not true. You haven't even learnt Astro to assert that. Even Python has its idiomatic moments where a beginner won't have a clue what's going on. In fact, Astro is not really aimed at beginners. I believe picking up a new language isn't really meant to be straightforward and as familiar as already known language. You shouldn't expect to find the same syntax everywhere. I wonder what you have to say about Julia, Lisp, Haskell and Scala. ![]() To make the supposedly obfuscated idiomatic Astro code a bit clearer In Astro: - type (also class) declaration starts with the keyword 'type' type Person - variable declaration starts with the keyword 'let' let age = 26 - function declaration starts with the keyword 'func' func add(a, b): - rt means return - functions return their last expression automatically, so the function above can be reduced to: func add(a, b): a + b - brackets surrounding function arguments are optional add(2, 4) - in Astro, a type that defines its fields in its declaration is called 'constructor type'. - Such types declare a constructor and their fields at the same time. - so type Car(make, model) - can be expanded to type Car: |
![]() |
mosefin19:a python group asap |
![]() |
asalimpo:A Kenyan dude wrote a scripting lang called Bracescript, but I can't find the source or documentation anywhere, so the credibility of that remains unknown. Astro is a movement that Africa can also do it. We are making sure that its not just a test language but a language ready for production and yes it will be open-source (which recent language isn't open-source anyway?). As for experiences, I will share some of them once Astro gets released. Here is another snippet of Astro / Python code PYTHON 3 ----------------------------------------------------------------------------- class Person: ASTRO 0.2 ----------------------------------------------------------------------------- type Person name, age This is not meant to show how concise or terse Astro's source can be, but to show that a statically typed language can also have the same expressiveness and script-feel of a dynamic language, with dynamic language features like duck typing. Astro also keeps the benefits of a static language which include the elimination of certain set of runtime errors that can only be detected with unit tests in dynamic languages. Also as a result of being statically-typed, Astro's interpreter tend to run faster. The Astro code above is 3 times faster than the Python version, and since Astro is a statically-typed language, this speed factor can grow even more with a JIT or native compiler implementation, but those are undertakings for the future. WASM is an intermediate representation currently being developed for the web. We believe so much in the connectivity and the ubiquity of the web, so we have plans to make Astro compile to wasm. Then it can Javascript in its crusade. Of course, these are all just big talks now, so lets get the proof-of-concept interpreter out first and see where this indigenous language goes. |
![]() |
I'm a co-developer of Pluto(now Astro) and I'm way too excited that I'm so eager to show some of the language syntax. Astro 0.2's interpreter is near completion and shows promise performance-wise. It's, on average, 2 times faster than Python. Yes, I know, everything is not about speed. But it's a nice thing to have nonetheless. I will give a brief description of Astro. Astro aims to be virtually ubiquitous with various compilation back-end targets like LLVM native, LLVM JIT, wasm, and bytecode interpreters. Its general goal, however, is to be expressive, flexible and fast. Astro relies heavily on Multiple dispatch and UFCS and consequently merges the divergent worlds of procedural and OOP programming. You will also find yourself typing idiomatic Astro much more quickly than in Python or Ruby. ![]() Astro type system is sophisticated so much that it feels like dynamic language even though it statically infers all probable types. The type inference is unlike Hindley-Milner techniques seen in Scala or Haskell and comes close to custom type inference algo found in Crystal. Here are some of the language features, some of which are not finalized or complete and may not make it to 0.2 release - Optional Typing - Lexical Scoping - Generics - First-class functions (higher-order function, closures, lambdas.) - Imperative - Object-oriented - Procedural - Expression-oriented - Operator Overloading - Multiple Dispatch - List Comprehension - Type Inference - Multiple Dispatch - Generators - Coroutines - Algebraic Data Types & Pattern Matching - UFCS - ... Astro is not really a simple language, and may not be suited for total beginners as much as Python. But once understood, a lot of things will viewed differently and done more concisely. This doesn't mean that the language is hard to grasp. It really isn't. We are also trying to make sure that the lang doesn't end up looking cryptic like Perl ![]() ![]() As for why Astro was created when there are dozens of production languages out there, and thousands of other toy languages still in gestation period in respective labs? Well, only Nypro can answer that question properly. For me it's fun, I learnt a lot. I hope it becomes mature enough and s the group of other rapidly developing languages like Julia and Crystal. Astro is barely a year old and still under active development. It will be released to the public under an MIT license very soon. # Python 3 from sys import stdout ----------------------------------------------------------------------------------- # Astro 0.2 func area: |
![]() |
Astro: println 'Hello, World!' |
![]() |
during my survey here programmers only focus on frontend and forget about the backend.Then ur survey is flawed. I do see a lot of back end topics here. Maybe not many, but they are not scarce. i notice we are good but not professionals in businessThis is a forum for discussion, you will see different personalities in a forum. A serious client should be reviewing a dev's portfolio, not how he called another person a chicken in a language war. Arguments happen all the time. Not just here in NL, but in foreign forums too. If someone's outburst is what a client is checking for, I don't think such client is serious about finding a dev. |
![]() |
If the group link doesn't work. Throw ur number here and I will add you up. I will try to always update the link tho. |
![]() |
You are a Python newbie, perhaps an expert. Hop in here let's discuss python. Except this time you will be meeting the other Java devs. Java folks are equally welcomed to this group. Dynamic language meets static language. We can learn sth from each other. We can even reduce the rift between both language by living together. Making crossing from one language to the other easy. You can move from creating ur next android app (java) to developing a client's website (python). We don't have to hate each other. Both languages have sth to offer. ![]() Web dev: Python: - Django - Flask - Pyramid Java: - Java EE apis Desktop app dev: Python: - PyQT Java: - JavaFx - Swing Mobile app dev: Python: - Kivy Java: - Android Mobile app dev Game dev: Python: - Pygame - Unity(boo) Java: - Libgdx - Jogl Scientific dev: Python: - Numpy - SciPy - Anaconda Java: - JScience - EJML If you only know other languages, you are also welcome. Javascript, Julia, R, C, C++, Crystal, C#, Ruby, Haskell, Rust, Go, Fortran, BASIC(gerrarahia), Ada(??we might need to check ur age), lisp, erlang, D, Swift developers. We are all the same family. Sorry if I didn't mention ur fave lang. Just hop on the bus and let's ride together. One thing tho, for the newbies, this is not a tutoring group, but we'll sure guide you towards becoming better. If I sound fishy, maybe I am, maybe I'm not, who knows. GROUP LINK: chat.whatsapp..com/2neanjfKUPPGNHnOvGncfXb Let's create something beautiful, shall we? ![]() 1 Like |
![]() |
noibilism:Erm... but Python, Ruby, Lua are older than PHP, except maybe Ruby which was released the same year. 1 Like |
![]() |
asalimpo:PHP codebase might be larger (mostly due to legacy code), but it is definitely not more popular than python. I bet if PHP wasn't improving its syntax and consistencies, ppl will just drop it for better alternatives. PHP7 introduced more consistencies to the language. Apart from C++ which is a truly complicated language and still used in niche areas like game dev, I don't see how worst is better. 1 Like |
![]() |
I nominate myself ![]() |
![]() |
*sighs*
|
![]() |
BL3zzY: ![]() ![]() ![]() WTF! Na by force to or sign up. |
![]() |
Random Guy in the Block. ![]() ![]() ![]() |
![]() |
XketchDesigns:Bla..bla....bla. Create yours in 1 month. |
![]() |
alezzy13:I was about to say that too. Their brains are quarter of what they are supposed to be. |
![]() |
XketchDesigns:Oh Oh, I would love to see you create something close to that after 1 month of learning Java or Python. Even if you create just a moving car without the environment, I will applaud you. Bloody civilians! ![]() As for the game developer, I will tell him to look into shader development. His 3D models are not bad looking. But he needs to work more on the look of the materials, so they can look more realistic. Adding atmospherics like lens flare, fogs, goes a long way to improve the graphics. Chromatic abberation, skid marks. Lots of other improvements can be done. I will like to share the little I know about shaders to make this game look better. That is if you are using Unity game engine. Good luck! ![]() |
![]() |
.
|
![]() |
I understand ur enthusiasm. Shutting down the internet for everybody else doesn't make sense. Internet is what makes the world a global village.
|
![]() |
dueal:I it I was mixing up cubic and quad bezier. If by vector graphics you mean using UVs, then that's exactly what my app is doing. UVs are the coords on a texture. Textures are not scalable, they show their flaws when you zoom on them too much. Why? because they use raster images. And that's what I've been saying all along. I use Spine. The images it allows are raster images. What it does, for a simple workflow, is use the images as texture to a quad, this is called texture mapping. And it es that to the GPU to be rendered to the display.
|
![]() |
dueal:If you have used Illustrator/inkscape, you will notice, while creating a vector image, that each curve is provided with two handles. This allows for S-shaped curves. That's quadratic (has 4 control points). Even though a vector format can use cubic beziers (which I find easier to use BTW), they simply don't though. ai, svg, eps all use quad bezier. UbiArt is doing exactly what my app is going to do. They might have used vector graphics for some aspects, but the lush environments were texture (i.e. raster) based. Using raster images doesn't mean the animations have to be rigid or robotic. They can be deformed. All it takes is increasing the vertex count near areas of the texture where deformation will happen. So squash and stretch animation with an image is very possible. Check this interesting Spine FFD tutorial. https://www.youtube.com/watch?v=0Dd2M8XBTo0 And I can bet my last kobo that the mobile version of Rayman Jungle uses texture-based animations throughout. Vector-based animations are just too expensive to be throwing about on mobile. |
![]() |
dueal:I think I get what you are trying to say. The way you explained how a human biped will be created makes me assume that you are mixing stuffs up. In that case you are not talking about vector-graphics (and they don't use cubic beziers BTW. It's quadratic), you mean the use of just vertices and vertex colors to create a character. Even though they are scalable, the problem with that proposition is that you won't have as much details as a texture can provide. All those pixel-level details cannot be created with vertices. That will just be plain expensive. Let me just give you a simple breakdown of how the 2d skeletal system is supposed to work. - You import a series of raster images that make up the movable parts of your character. - You draw out bone gizmos on each image. - You control (rotate, translate or scale) the bone gizmos and use that to animate the images. - The series of animations are saved in a file. - The images are packed in a texture atlas. - Each image becomes a texture to a quad. And using the animation provided, each image is animated as appropriate. For a simple workflow like this, the vertex animation can be done on GPU. But its not always this simple. And using only vertex colors instead of textures might work for some low-detailed elements in the game. It is however not a replacement for textures. This is not just me coming up with stuffs. This how other 2D skeletal animation apps implement it. ![]() |
(4) (of 4 pages)
(Go Up)
Sections: How To . 98 Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or s on Nairaland. |