Hot answers tagged

22

Bear in mind that the main reason Agile processes were created was to cope with shifting requirements. If requirements are set in stone (truly fixed requirements are rare but I'll take you at your word here!) then some of the best practices for dealing with changing requirements - e.g. Negotiable stories - become somewhat irrelevant. That said, following a ...


18

You want your ideas expressed clearly in the language that hosts them. That means using host language idioms. Take the popular Underscore library: js and lua. The lua port is functionally equivalent for the most part. But when it's appropriate, implementations are slightly different. For example: _.toArray() becomes _.to_array() This change makes the ...


14

You have two separate issues: How to code a C or C++ program which can easily be ported to several operating systems. The easiest way is to use some cross-platform framework library like Qt or POCO (or perhaps libsdl or GTK) which has been ported to several platforms and provides a common set of abstractions. You could also restrict yourself to purely C99 ...


11

I really doubt this will work. You might be able to translate your code into Java byte code, but it will not magically translate library calls into equivalent calls to the Java runtime and libraries. There may not even be equivalent Java runtime calls! Even if you eliminate all proprietary libraries you're still left with the C++ standard library. To make ...


10

Translations (both to a different natural language and to a different programming language) are considered to be Derived Works. When creating a derived work that is so radically different from the original as a translation to a different (not closely related) programming language results in, it is actually quite hard to understand how the requirements from ...


10

Of course Scrum is useful. It's a methodology that does two things for you: It allows your project to adapt to change and It allows you to track progress, and get an idea on when it will be finished So, there's some value in using it. I think some of your preconditions are not correct and that's where you are getting lost. I can't see how each story ...


9

although it compiles and even runs... how can I be sure is is working as expected? The same way that you made sure the original code was working as expected. By extensively testing it. can I be sure that underlying runtime does not change in a way that it introduces new and unexpected runtime bugs? You can never be 100% sure of that, but if it is a well-...


7

Ignoring features in such a case does not make sense to me. The typical reason for using Python for prototyping is exactly because you can implement things in a fraction of time and "space" (=lines of code) than in C - by making use of features Python has, but C does not. If you would restrict yourself only to Python features which have a 1:1 correspondence ...


7

Based on my experience writing compilers and related tools in C and similar languages, I would NOT choose to write a compiler in C if I had any other, better choices. And in 2016, there are plenty of better choices. But, it's your compiler, and YMMV. The TL;DR backstory: "We should forget about small efficiencies, say about 97% of the time: ...


7

Those calls can't be ported, at least not directly. gcnew is not a C++ keyword, it is from "C++/CLI", which is a different language currently not supported by gcc. This older SO question says there was once an attempt to support it, but it seems to be dead since 2009. The only reasonable way for this is to port all of the the managed code to standard C++, ...


6

Legal? -> ask a lawyer. Anyway, this depends strongly on the country you distribute your adaptation. Ethical? -> ask the authors. All of them. Some may see this as a tribute, others as a robbery.


6

How C language is portable to any instruction set (I mean for new architecture). It is not, but C is portable to most reasonable instruction sets close to existing ones. As an hypothetical counter-example, you might define a computer architecture using ternary (not binary) or decimal. Both did happen in the past (1960s: IBM/1620 was decimal, Russian Setun ...


5

in general, every new architecture needs a new port of the C compiler (along with the rest of the C tool chain) Usually this starts with the development of a 'cross compiler' on a known architecture to compile C for the new architecture. (the compiler, itself, can be what is being compiled, from source, for the new architecture.) even a related new ...


5

If I understand correctly, what you seem to be describing is that you have a highly-optimized C implementation of some codec that you need to bring to a platform-agnostic managed environment like .NET. There are some problems with this. A codec that has been optimized for several CPU architectures includes a lot of platform-specific code, because that's ...


5

Not really. There's no purpose in moving to C++ if you don't make use of the C++ language and library features. It would be effort for nothing, and there are some costs, like ABI. OTOH, if you do make use of the language features (especially RAII, EH and templates), you will get a far superior program. Many problems can be far easier expressed in C++ than C,...


4

TL;DR All project management controls add overhead. Don't add overhead you don't need. Scrum is the Wrong Hammer Here (Don't Be a Nail) Scrum is a project management framework rather than a set of development practices suitable for an individual developer. Unless you are doing project management, Scrum is probably the wrong choice. In addition, when you ...


3

No, and that assuming the code will compile (you will have to make changes, C++ is not completely compatible with C, for example void * values cannot be assigned to other pointer types, and there are new keywords). In best case, there will be absolutely no difference. C++ doesn't add any new undefined behaviors the compilers can depend on. I don't think it ...


3

The answer can be found right in the license text (emphasis mine). Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or ...


3

Is there any sort of benefit to be gained by porting the code to C++? I think the key phrase here is "porting". What do you mean by that? If you truly port the code to C++, make use of C++' features like templates etc., there is a chance this might speed up the code. (For example, C++' std::sort() is known to be faster than C's qsort() because a C++ ...


3

You don't need to give any credit if you don't want to. Most computer languages are inspired by other languages and have features like those languages. Just check Python's own tutorial on classes and library reference for itertools. While reading these I thought they were advertising and nearly gave up reading the tutorial on classes as it was too much in ...


3

Any Turing-Complete language feature can be implemented in any other Turing-Complete language. Were that not the case, we'd still be stuck with the first programming language ever invented. So really, it comes down to how much effort you want to expend. In a way, you're asking the wrong question. The question is not "Should I implement a feature in the ...


3

This is very personal and depends on your style of maintaining your code and how you work with code repositories. Then again there are recommended "best practices", that are there for a pretty good reason. You can do either one approach and it won't be "wrong" in the sense that as you stated, this is going to be a personal project and no other people will ...


3

If the software is well-written, it should be none. If the software makes assumptions as to the native word and pointer sizes, you'd have to track down and fix those.


2

As the link in the comments shows, this is borderline acceptable. It can be made safe by a cleanroom approach: make a specification, listing every idea and feature that you will copy. Your new code will implement the specification, and therefore not be a copy of the old code.


2

The basis for copyright law is that, if you create something by means of a process that is not entirely mechanical (i.e. it required you to think), then the copyright belongs to you (or your employer, if the work was created as part of your employment/job). With that basis, there are no obstacles in copyright law to re-create a program based on your memory ...


2

I understand your concerns, but I believe there is still value for you in using scrum. Admittedly, the user stories are much more fixed than in a consumer facing application. So that aspect of scrum will provide less value. Where I think you will get value is from the iterative and frequent releases. Having a potentially releasable product at the end of ...


2

First rule of thumb - never start over if you can avoid it. That's a Joel Spolsky rule of software development. So that's automatically a strike against re-writing your app in HTML5. Fortunately, you really only have to re-write the client. You can update the server app incrementally, but you don't need to replace it wholesale. However, moving from ...


2

Yes. The instruction set is defined, machine code, an assembly language syntax is defined along with an assembler. Most likely a linker, and then you are ready for a port of the C compiler. And then you can start with bootloaders, operating systems etc (naturally after design verification or as part of it). On rare occasions does anyone vary from this ...


2

If it is the same project, it makes sense to have all "versions" of it (in different languages) in the same repository, so that you will be able to easily track changes in each version (a subdirectory of your main repository per language I would think, not a branch in the git sense). For example, if you implement feature X, you will be able to do a single ...


Only top voted, non community-wiki answers of a minimum length are eligible