Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / NewStats: 3,152,589 members, 7,816,453 topics. Date: Friday, 03 May 2024 at 11:27 AM |
Nairaland Forum / Appcypher's Profile / Appcypher's Posts
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 7:17am On Jan 22, 2017 |
Something unpleasant happened. There will be a delay. But we will be back. 1 Like |
Programming / My Solution To Nigeria's Problems by appcypher: 12:20am On Jan 22, 2017 |
> cd /home/africa 4 Likes 2 Shares |
Programming / Re: Who Exactly Is A Developer. by appcypher: 9:04pm On Jan 19, 2017 |
talk2hb1:Why u con comment? |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 11:42am On Jan 18, 2017 |
Some significant changes made to the language so far. - Functions can now be included inside type definitions. We discovered it saves some time when typing methods within the same file as the type. - Changing from a goroutine concurrency model, to an actor concurrency model. The initial attraction to goroutine model was its ease-of-use and cheapness, it does not, however make useful attempt to prevent race conditions or deadlocks. After looking into the implementations of actors in Scala's Akka and Pony, we feel it's the better way to go. Astro (not actual name) will be released next week. 3 Likes |
Programming / Re: Must You Be A Mathematics Genius Before You Be A Programmer by appcypher: 1:19pm On Jan 17, 2017 |
samijay8:Obviously you don't have to be a math genius to be a programmer else there will hardly be anyone in the field. I won't say I suck at maths, but for most the parts I get away with logic and basic algebra. If you are not developing games or math-oriented apps, you shouldn't have problem with maths. Maths is cool tho, once you understand it intuitively. Check out betterexplained.com 1 Like 1 Share |
Programming / Re: Are They Cobol Programmers/jobs In Nigeria? by appcypher: 7:06pm On Jan 16, 2017 |
Craigston:Lisp is cool, but if you want a modern version of it, check out Clojure. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 6:21pm On Jan 15, 2017 |
I can understand your position, but u didn't take note of what I said earlier. Why there is the need for new languages. Old languages are reluctant to change. Everyone with a brilliant idea cannot just go into an old language and start tweaking it. One aspect that might need changing is the syntax, and once you start having that, you have yourself a new language. And just like u said, the cost of adoption is free. Eventually it's the programmer that has the choice to adopt or not to adopt. I don't think there is any harm being done. And saying language development proliferation is bad is somehow, since language development is a software engineering field. You can't say the development of software is too much, can you now? And you mentioned established developers being out of touch due to rapid introduction of new languages. While that seem like a valid argument, it's not entirely factual. I can only count few new languages (less than a decade old) that have managed to get a sizable audience so far. And I won't say they have grown large or stable enough to displace any one's income. And change is the only constant anyway. You have to move with the trend. There's nothing we can do about that, we are in a technological field. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 2:30pm On Jan 15, 2017 |
asalimpo:Yes it is enough reason to create his programming language. As long as he has the capacity to. Not only will he learn more from it, his idea unprecedentedly become revolutionary. The only language that I know that makes it easy to incorporate new features is Lisp. Other languages are not that accommodating without breaking some feature or backward compatibility. So one does not just add a feature to an existing language cos its cool, the design goals of the language may not allow it, and the original design could prevent such feature from fitting well with the language. Apart from that the community or the language creator may disapprove it. So what do you do then? Kill the idea? No you create yours! C# nko? java copycat. While microsoft could create c# because it had the resources to, It's existence wasnt a necessity. That it exists doesnt justify it's creation.Well MS can't just start supporting another intellectual property, I don't think things work that way. Like I said before, new languages come up because old languages have design goals and cannot just change radically. They evolve and that evolution can take a long time. See generics for example, C# did it the right way. Java tried to evolve it into its syntax, and it feels awkward, even up till now. C# added a lot of useful features Java may never have, and it didn't shy away from dynamism and some useful C++ features like operator overloading. The fact they're a plethora of programming languages doesnt mean that that is the way they need to be or that it's a good thing. Look at more established fields, you dont see such fragmentation. The fragmentation only exists in programming because the cost of doing so is low? (just a computer and so on).Is there a conceptual equivalence of programming language in other fields? I don't see the analogy here. So what did ceylon and kotlin bring to the table that made a light and day difference?While I can go on and on about what some of these new languages bring to the table, instead I will touch on why they are needed and why they should continue. The fragmentation you mentioned only exist among top tier languages. Newer languages only have little fraction of the audience or none at all I don't think a programmer looks into language just cos it's new. There is a motive. The new language could have introduced something that could make his life easier, or he just finds the ideas interesting. Irrespective. These research in language design and implementation should continue. Just like any other field the practical implementation of a concept is important. This is how we do it in computer science. We create new languages. If it works. Fine. If it doesn't, we move on and improve. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 8:47pm On Jan 13, 2017 |
asalimpo:The thing is there's always been a lot of languages. Most are niche, simple or exotic languages. Nim, Julia, Pony, Kotlin, Ceylon, Elixir, Crystal, Jai, Quorum, etc are quite recent. They all have reasons for being and the research into language design and development MUST NOT stop. They can't anyway. There is always someone out there who thinks he has a better idea how things can be done. And that's how innovation comes about. If language development was a passive area, we'd be stuck with old languages for years before some uprising occur. Quorum is one of those languages that left me wondering how useful it can be in production. But then I realized how short-sighted I was for considering just my own criteria. Quorum, among other things, wants to make programming by speech easier, which will help blind people (for example) to program their own codes. Ideal or not, it's a new direction nonetheless. Astro (I will call it that for now) came out of the necessity to create the first production-ready language from Africa. There can't be too many languages. Why is that? Because one language cannot solve it all. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 5:42pm On Jan 13, 2017 |
elfico: ChinenyeN:Thanks guys. We've been reworking the syntax of the language a bit to support Actor concurrency model natively. If you need to know more about language that support actors natively, check out Erlang and Pony. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 10:54am On Jan 12, 2017 |
FincoApps:Thanks for the following. For now just consider Quadro a codename. We will need to make more research into the language name before its release. Astro was a good name, but it can't be used. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 11:26pm On Jan 11, 2017 |
Renaming to Quadro. Astro is taken. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 10:27pm On Jan 11, 2017 |
asalimpo:Seems you want a simple language. If there are just functions and variables and there won't be user-defined types, I don't think you need all extra complexities of a well-defined type system. You will need some form of type inference, but it won't be that complex if there are no user-defined types. BTW, in Astro ur example can work both ways. func +(...args): |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 5:46pm On Jan 10, 2017 |
We are changing Astro's concurrency model from goroutine-like to actor-like. We've not implemented the goroutine model yet, so we can still change the language a bit to better accomodate actor-style concurrency. Major reason for this change is that goroutines don't handle error as well as actors. I'm taking my time to properly understand how erlang or akka actors can make Astro a better, fault-tolerant language. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 10:46pm On Jan 09, 2017 |
Craigston:Astro has generics, so yeah, you will get templates. Astro has language-level support for PCRE just like Perl and Ruby. The simplest way of putting Algebraic Data Types is probably seeing them as a combination of types to form other types. Kinda. Addition = Number, Plus, Number They usually come in handy when u are developing a DSL or some structured grammar. |
Programming / Re: For Computer Science Students by appcypher: 12:17pm On Jan 09, 2017 |
azibit:While I agree with the issue of readability over speed. In some cases, ppl still want the speed or the manual control of memory resources. Not everyone is writing high-level application. Some are writing drivers, kernels, operating system, the inner part of a game engine, scientific computing, etc. So those languages/frameworks that claim speed are very needed. We need Rust, Julia, Pypy, etc. Readability shouldn't suffer tho. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 11:27am On Jan 09, 2017 |
silento:. If pointer arithmetic is what you want, by all means, stick with C. You won't get that with Astro. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 2:56am On Jan 09, 2017 |
Craigston:I see you took some of your time to study the little details I've left so far. I truly appreciate that. Astro uses a Multiple inheritance model just like Python. type Monkey You can also have abstract types by adding 'ab' to your type declaration. This simply means the type cannot be instantiated. type ab Person Abstract types are useful for a lot of things. It can allow us to implement Java interfaces for example. There are access modifiers in Astro, tho not as elaborate as Java's. Astro has hide modifiers for fields. Hide is synonymous with protected in Java. It means such fields can only be seen and referenced by the type's (or subtype's) constructors and their associated functions. type Account Contents of a module (also a file) are public by default. You can make a module primitive private to prevent other modules from seeing or referencing it. let `rent = 30_000 # the back tick signifies private access Astro doesn't have package-level access. Nypro claims it is used less in practice and that Java has it because it allows just one class per file. If we see the need for it we will consider having it in Astro. That logo in the terminal is so JuliacAstro's REPL is inspired by Julia's. Is that the atom editor?Yes, it's an Atom editor. We are implementing the IDE on Atom. Nypro also wrote some Astro plugins for Sublime Text, Vim and IntelliJ, but Atom is our main focus. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 8:02pm On Jan 08, 2017 |
tohero:Its interpreter hasn't been released yet so it's not production-ready, and probably won't be for a while after release. It's certain we'll have a lot of bugs to fix when user reports start streaming in. After the interpreter design has been finalized, we will move on to machine code compilation with LLVM. As Asalimpo has said, you may need to leap back and talk more on what makes astro better rather than the generics.I think I've touched some parts that makes Astro different from other language in previous comments. Lemme put it thus, to make it clearer for people who have the same question. Astro is an object-oriented multi-paradigm scripting language that brings with it the benefits a static type system (looks like Python, moves like Java). Astro also introduces an Astro ≈ Julia + Crystal + Nim |
Programming / Re: If There Is A Piece Of Code You'd Hang On Your Wall, What Would It Be? by appcypher: 4:42pm On Jan 08, 2017 |
CodeBlooded:No make(money)? |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 4:24pm On Jan 08, 2017 |
asalimpo:Oh, sorry I misinterpreted you. Yeah, the Dragon Book is quite heavy, and picks up complex concepts rather fast. My own problem is with the length. I got tired reading it, but I revisit it once in a while to understand certain things better. But the ultimate resource that got me on my feet quick is this youtube tutorials. As for maths syntax, I don't think it is that bad. I definitely don't want to be typing 1 plus 1 minus 5. There is a point where simplicity becomes a hinderance, and there is a point where terseness becomes terrible. I'm more critical of how mathematical concepts are explained in traditional educational system. No practicality, just bunch of abstract concepts to memorize. I welcome critiques on Astro tho, don't let my previous reply deter you from assessing Astro. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 12:36pm On Jan 08, 2017 |
asalimpo:The thing is Astro is not Python. The design goals of python are different; to be simple and expressive. Astro chooses intuitiveness and saving programmers time. Redundancy is good in some cases, in some other, Astro makes it optional. Familiarity is also relative. Imperative guys will see Python as familiar. Functional folks will think Erlang familiar and scientific (Matlab and co.) people will find Julia syntax familiar. Astro is more in the imperative camp with a touch of functional and scientific. We are not really competing for market share here; just ideas that can make some parts of coding intuitive and easier. Astro syntax is not even that new. I believe polyglots should find it familiar and, with introduction to certain concepts, should be able to command the language well. Designing a language is freaking far from easy! We wanted it to look very Pythonic in the beginning, but syntactical tradeoffs had to be made for some concepts (that are not in Python) to make sense. We can't betray intuitiveness just because we want it to look absolutely like Python. Even Nim and Crystal couldn't do that. So maybe Astro is not for everyone looking for familiarity, but it's definitely for people looking to try out new things; new concepts that might make their coding lifes easier. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 8:42am On Jan 08, 2017 |
stack1:True. We are actively working on that. , but BIG KUDOS to you guys for even attempting something like this, so how do you generate machine code, LLVM backend ?We are working on just the interpreter now. LLVM is planned for the future. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 12:28am On Jan 08, 2017 |
asalimpo:I like your argument. There are truly camps for and against Multiple Inheritance and it is true that modern languages are moving away from it. Language moving away from old concepts and adopting it back is nothing new tho. Multiple dispatch was implemented in Lisp but never got wide-scale adoption afterwards. Julia took the concept and polished it, which is why Astro is adopting it. MI is already designed into the language, removing it will need thorough planning for an alternative. Maybe in the future when there is a convincing proposal for why Astro should use some other Inheritance mechanism, then MI can be replaced in Astro. I believe you are pragmatic, so philosophical impurity can only be determined by how well a concept works in practice. Let's see how MI fairs with the language first. If it proves unusable or bad, we will consider an alternative. 1 Like |
Programming / Re: What Programming Languages Are A Waste Of Time To Learn? by appcypher: 10:14pm On Jan 07, 2017 |
What Programming Languages Are A Waste Of Time To Learn?None! |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 10:05pm On Jan 07, 2017 |
Emmach10:It's not available to the public yet. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 10:04pm On Jan 07, 2017 |
asalimpo:Multiple inheritance is not considered bad design practice, its implementations are. Many with experience of multiple inheritance will tell you there's nothing wrong with the concept, just the way some languages implement it. C++ is an good example of why people hate multiple inheritance. You hardly hear the same story from people who use Python, Eiffel or CLOS. And Multiple Inheritance is hard to implement right, so a lot of modern language designers tend to skip it altogether. Multiple inheritance is super useful when implemented right. It makes OO even easier to reason about. Interfaces, Traits, Mixins and all the other alternatives feel like you have to do extra unintuitive work. Interfaces for example require you to implement methods every time you use it. In fact, the diamond problem still exists with Scala Traits, but the language knows how to handle it properly. In short, it's the implementation that matters. I would like to have a WorkingStudent type that inherits from both Worker and Student and that's it. I don't care if Worker and Student both inherits from type Person, which results in a diamond problem. And I don't want to manually reimplement methods with every inheritance. There! You need multiple Inheritance. Multiple Inheritance allows reuse of code. 1 Like |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 5:13pm On Jan 07, 2017 |
asalimpo:Astro has types, they are synonymous with classes in conventional OO languages, except that you can't have functions inside of Astro types. In that sense, they are more like C structs. You only declare fields within a type. Astro has functions and they are just like C functions. With these, Astro is able to emphasize the separation between data (types) and operations (functions). The OO languages you see are usually either completely class based (Java) or a mix of procedures and classes (C++, Python). Astro, however, does OO without using classes. Just types and functions. The key to achieving this is a delicious mix of Multiple Dispatch and UFCS (Uniform Function Call Syntax) Multiple Dispatch, simply, is the technique of calling the right function by checking the types of the arguments passed to a function. This definition is not entirely right, but for the sake of this discussion we will go with that. func add(a = Int, b = Int) If we type add(5, 9), the first function will be called. If we type add(3.5, 1.2), the second function will be called. So the appropriate function is called based on the types of the arguments. This may look like method or function overloading, but it isn't. Multiple dispatch is usually determined at run time and does more than method overloading, like using subtype polymorphism in dispatch process, etc. With multiple dispatch you can just have only functions and apply them to objects. No need for having methods inside classes. type Person (name) You can create an instance of Person and just apply the details function to it. let daniel = Person("Daniel Okoroha" ) Because Employee is a subtype of Person, you can also apply details to instances of Employee. let george = Employee("George Adamu", "Digital Artist" ) That seems straightforward. So why do we need to define methods then? Well, some may say beacause of dot notation. details is just a function, not a method, you can't do daniel.details(). You can only do details(daniel). Well that's where UFCS comes in. It's the unification of function syntax with dot notation syntax. Who said we can't use both, huh? daniel.details() and details(daniel) are valid in Astro. In essence, this means we can call a function by it's first argument. So if we can do: play(game, at:"30fps" ). We can also do game.play( at:"30fps" ) And why is using functions only cool? We can extend a type just by writing a new function for it, even if we inport the type from a foreign module. Methods however can only be written inside their classes. It also zips the gap between methods and functions. Why should they be treated differently? It also allows you to focus your attention separately. types contain the data, functions operate on the data. Data vs Operations. Why have operations (methods) inside of data (classes)? There is a particular function in python that some people have clamored for to be implemented as method. With Astro, you can use either. It's your choice. len([1, 2, 3]) or [1, 2, 3].len().Although in Astro the function is named size. On the github page, i saw no code. I wanted to download and check it out.We have not made the interpreter's code available for obvious reasons. It's neither complete nor stable. You could get several memory leaks. That's why I tagged it near release. But we can make it available if you don't mind f**king up ur system . - Multiple inheritance!Yes multiple inheritance . Are you afraid of it? We are not. It's the implementation that matters. |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 3:49pm On Jan 07, 2017 |
orimion:Astro uses 1-based indexing. Nype feels it's more intuitive, and matches the way we work with maths. 0-based index languages, like C or Python, make you think in offsets of the index rather than the index itself. Astro - 1 2 3 4 5 Astro -> list[1] = 'h' # returns the element at the actual index Slicing in Astro is more intuitive as a result too. Astro -> list[2:4] = 'ell' # returns the substrings at the actual indices At the end of the day there are both pros and cons for using either methods. We chose intuitiveness. 4 Likes |
Programming / Re: Astro Programming Language 0.2 (indefinite release) by appcypher: 12:35am On Jan 07, 2017 |
asalimpo:1.) Astro is a modern language that took careful consideration of useful features in several languages. - It borrowed goroutines for fast, cheap concurrent routines - It aims to be both compiled to both machine code and bytecode - It makes OOP a breeze with multiple dispatch and UFCS - It is maths oriented, this can be seen in its list representation. In short I would say Astro is a fast embeddable scripting language with modern features. This description does not really represent Astro well, as I've mention earlier on this thread, it is hard to niche Astro, as it can be used for stuffs beyond just scripts or high-level programs. That's why I put in the same camp as Swift. If you check for "the goals of Swift language" then you will know what I'm saying. I think it is this ubiquity that makes Astro potential, it can be used to write anything from a script down to a kernel. You don't have to switch languages (Python to C) along the way. And with our plans for web assembly target, Astro will have a place in the Web. 2) Libraries (and a package manager) are obviously a planned feature. I've actually started implementing some naive algorithms myself . And for existing libraries, we plan to provide hooks that will allow calling Python and C functions directly. |
Programming / Re: NGR, Nigeria First Made Programming Language by appcypher: 8:47pm On Jan 06, 2017 |
asalimpo:Just stick with pdf version then. Even if it is available locally, it will still be expensive. |
Programming / Re: Friendosphere.com is there for you, developer-inclined website by appcypher: 4:23pm On Jan 06, 2017 |
DanielTheGeek:Cool, your site looks nice. How come I'm just finding out about it now? BTW, I feel, you need an Android app to back this up. 1 Like |
(Go Up)
Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health religion celebs tv-movies music-radio literature webmasters programming techmarket Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 137 |