Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Poll #5: What other programming languages did you use, do you use, or are planning to use/learn?

What other programming languages did you use, do you use, or are planning to use/learn?

  • C/C++

    Votes: 12 32.4%
  • C#, VB.NET

    Votes: 19 51.4%
  • VB (Classic, including ASP classic, VBA)

    Votes: 16 43.2%
  • JAVA

    Votes: 4 10.8%
  • Web langauges (JvaScript/PHP/Perl)

    Votes: 17 45.9%
  • Python

    Votes: 10 27.0%
  • Pascal/Delphi

    Votes: 11 29.7%
  • Fortran , Cobol

    Votes: 9 24.3%
  • Data Science related (ie R)

    Votes: 3 8.1%
  • Anything else (name it)

    Votes: 8 21.6%

  • Total voters
    37
  • Poll closed .
Status
Not open for further replies.

Chris Miller

Programmer
Oct 28, 2020
4,756
DE
I'm just interested. Also see other polls about past, current, planned versions and VFP successors.
 
I've also programed in RPGII & III, old school BASIC, Scheme, DataPower (a 4GL made specifically for GIS development), in the data science "theme" COGNOS, and I feel like I'm missing 3 or 4 others...

EDIT: Oh! Paradox! And Object PAL.
(We had a saying: You can do it like they do in other OOP languages, or you can do it like they do in Object PAL. That wasn't a complements. :))
 
Last edited:
None of the above. Many years ago I taught Fortran, Cobol, Pascal, Assembly & RPG but never actually used them. My method was to stay a chapter (or 2?) ahead of the class. :geek:
 
I've been writing code since 1979, and since I'm self-employed I try not to learn languages just because they're trending as an opportunity for future jobs.

I've always felt that the language and its syntax are just a small part of the equation.

The analogy I've often used is that if you were asked to write a play in Spanish and you had to choose a writer, you shouldn't limit yourself to Spanish speaking writers.

Given a choice between Carlos your dentist who's spoken Spanish since birth, or William Shakespeare, who's never spoken a word of Spanish in his entire life, you're going to have a better play by teaching Shakespeare Spanish than you would by trying to teach your Spanish dentist how to write a good play.

Besides the choices in the poll, I will add T-SQL, and PostScript as languages I've written in. PostScript ended up being easy to learn and it let me produce some really nice looking invoices and reports from DOS, long before Windows opened the door to fonts, visual report designers, PDFs, etc..

Believe it or not, I still have two clients who are running code that generate some of their output using PostScript.
 
Started off with GW Basic back in the 80's and then onto QuickBasic writing accounts software and later CAD software for about 10 years.
Used Visual Basic for 20 years do all sorts of stuff but mainly graphical based, CAD, ray tracing etc.

Started working for a company in 1999 that ran on a FP2.6 accounts and manufacturing system, learnt VFP to re-write it all and update it, picked VFP so I could work through each department one at a time replacing the software while the other departments were still using the DOS software and could share the same database. Have done pretty much anything I have done since in VFP, but coding is only part time for me.

Am looking at options moving forwards, have coders that work for me/with me that use C#, Java, C/C++ as well of a load of other funky stuff as they develop their own hardware so doing firmware development for stand alone device and things like custom hats for RPi devices etc.

They don't like how I can throw a GUI together 10 times faster in good old VFP than they can in the latest ,NET offering.
 
I once looked into InterSystems Caché in the beginning of the two thousands, but other than a bit of testing and eyeing with the concecpt I never got warm with it. It could be worth looking at what's in store from them, today, though the Wikipedia article about it (https://en.wikipedia.org/wiki/InterSystems_Caché) is a red flag with the banner on top stating "This article may rely excessively on sources too closely associated with the subject,"

The last sentence in the "Market" paragraph stands out as such, to me:
The DB-Engines website ranked Caché as the most popular object-oriented DBMS every month from March 2013 to January 2023, when it was overtaken by InterSystems IRIS Data Platform.[6]
You can always be the most popular in a category, if you're the only one in that category, and then even compete with yourself and overtake yourself just to promote your newer product, too.
 
I am learning X# and I believe it will continue my technical life.
 
In the past I have used C/C++, Java, Fortran (first language), AutoLisp (AutoCAD), and xBase. Now use ABAP (SAP) and VFP.
 
Apple BASIC, 6502 machine (a bitch one byte at a time), and 6502 Assembly via Merlin Assembler.
 
I've been doing programming since 1995-96
started with foxbase, then dbaseIII plus,then come foxpro 2.6 dos.
I shifted to VFP 5 and aobve and presenly using vfp 9.
I also used c# but I found VFP is much better then all other language for desktop programming.
I have some clint who are using foxpro 2.6 till date for their weigh bridge.
 
Currently learning/using React. Mostly with AWS Amplify right now.
 
Currently learning and rewriting part of my accounting app (VFP 9 with POSTGRESQL as database) in VB.NET (VISUAL STUDIO 2022 COMMUNITY EDITION).

It is not same as with VFP 9 and needs lot of work and time (forms design, call stored functions, grids, LINQ, reports ....).

In POSTGRESQL I use stored functions and this make my job easier because I do not need to rewrite code on server side .
 
I use one EXE file for all my applications. Program EXE processeses (interprets) commands saved in the memo fields. Fox-Pro (since version 2.0) turned out to be a very simple and good tool for this purpose. Thanks to this, I could correct code of my clients' programs and run programs without compiling. Thanks to this, they can see changes immediately on their computers. I implemented commands (IF, Case, For - Next, While Do - End Do, Begin - End ... etc.) and tools for creating user interfaces, reports, etc.

Some of commands I came up with myself :)
Cool gadget and it works. I was diversifing my work by this toy. :)

I plan to transfer my program to FVPA (64 bit). For now in a test version to check if it works. I have to be prepared for the change. Maybe I will find another platform better than FVPA. I can't leave my clients.
 
Last edited:
Why would you not use EXECSCRIPT(Memo) to simply execute VFP code in a memo field?

I think the runtime even supports the COMPILE commmand. Not BUILD, that's for sure, MS forbids that otherwise the license to distribute the runtime royalty free would grant you to provide a VFP IDE royalty free.

But you could COMPILE PRGs, VCXes, etc. from your EXE and, well, that's not even necessary, as the feature of macro substitution requires the runtime to have the compilation ability and whether you use the COMPILE command on a PRG or VCX or simply DO a prg it or use CREATEOBJECT or NEWOBJECT to create an instance of a class in a VCX it gets compiled on the fly to execute. So the only need for writing your own interpreter arises from wanting to execute new command words. New functions are simpler, because user defined functions can have any name you want. New constructs like other program flow instructions are also only possible when writing your own code interpreter, but is it really worth that? I just wonder.
 
Amusing... I never thought to do this. But then again, I don't have an issue with a recompile to EXE so much...
 
I create EXE by compiling the project.
PM.jpg

I run macros via commands such as:

X=[ Wait "Hello World" Window]
&X

Do While, For Next etc are simple operations on text variables.

I use "Do ProcedureName" commands for running my procedures includes in EXE program.

ExecScript() is only since VFP7 available. I use my solution from Fox-Pro 2.0. I am currently using VFP6 and VFP9.
I worked all of this when there was no EXECSCRIPT() function available

It's too much work to rewriting everything to EXECSCRIPT() . Most of my apps works under FVP6. I will migrate everything to FVP9, but I need to maintain compatibility. This excludes using EXECSCRIPT() function in VFP9. Too much of differences in interpreted code.
Functions returning multiple values: "Make X,Y,Z :UserFunct()" or called from different tables (memo fields): "Make X,Y,Z: MemoField.UserFunct()". Good fun :)

I dont't run compiler in the distribution version from EXE file. I dont'n compile and run compiled programs into separate files (FXP) in the distribution version.

I hope that, everything is legal :)
 
Last edited:
Thanks for pointing out how you came to implement an interpreter before Execscript existed. If your invented language doesn't match VFP 1:1, then it's obviouslly not as simple as throwing out your interpreter and instead do EXECSCRIPT.

I think we have a bit of a language barrier and not all I say comes over to you. I don't mind to rephrase things until you get it, no problem, Piotr.

One thing I thinkg you still don't realize correctly: When you do &X, that's running "the compiler", even though it only compiles one line of code and not a whole script. It's in the runtime, that's not illegal, otherwise macro substitution couldn't be a feature of VFP. Or the other way around, as I already said for macro substitution to work the runtime must contain the ability to turn a line of soure code into compiled code that can be executed.

Notice "the compiler" is not the same as BUILD is. It's not the reason the terminology to create an EXE from a VFP project is called building an EXE instead of compiling an EXE, but it makes things a bit clearer for VFP. Compiling itself is a broader term that covers creating EXEutables, of course, so you can say you compile an EXE. The definition Wikipedia gices for compilation is turning source code into machine readable code, be it in a lower level language (like the assembly language of a CPU aka machine code or "object code" of any kind like VFP actually does. Such object code, aka byte code isn't executed by the IDE, it's read by a runtime and that executes the corresponding implementation of that.

The way the runtime is written isn't having a loophole that allows you to do someting illegal by EULA terms of VFP, simply because you're allowed to provide the runtime (obviously otherwise you couldn't provide EXEs) and so everything it executes is legal in that sense (you could, of course, write code that does illegal things in the broader criminal sense, but we're only talking about legal issues regarding the copyright of MS on the VFP IDE, including the major feature to create EXEs from source code).

The IDE can't be provided 1:1 technically in first degree without providing VFP9.exe. And that, well, is the IDE, mainly. Aside from many more files you also need to run the IDE, but which mainly are also in the set of files you're legally allowed to redistribute referring to redist.txt in the HOME() folder.

So, indeed, MS is almost allowing to distribute VFP itself, if you'd be able to provide all the missing features of the IDE by programming them, you could easily have a VFP clone on a totally legal basis that uses MS runtime to run VFP code in exactly the same manner and performance as if it came from the original IDE. MS then could only argue on infringements copyrights it has on the FoxPro language itself. but in most commands and functions of VFP they actually give up the copyright not just because the EXE in the end runs your code on a customers PC, as is the case in any other computer language, too. What goes beyond that in VFP is the availability of EXECSCRIPT, macro substitution, the DO and the COMPILE command. It's not unheard of, though. The .NET Framework and SDK kits you also get free and are allowed to use - they contain C# and VB.NET compilers, there are lots of free C++ compilers and linkers, so it's not hard to mimic an IDE.

What you did is provide a domain specific language, maybe close to the VFP language and allowing almost any VFP constructs, too, But given EXECSCRIPT and mscro substitution exists, that's not illegal. If you manage to make it a compiler that can produce an EXE from VFP source code, that still isn't violating direct copyrights MS has on files the EULA and redist.txt doesn't allow to redistribute, they may then refer to legal rights of the language definition itself, but as said they gave up on that almost entirely, even though being able to execute code and compile code they still keep the copyright on the implementation of the VFP language in C++, that's surely theirs and allowing the runtime distribution that contains the compiled C++ code doesn't make it open source or free or public domain, of course. But even if VFP wouldn't be discontinued MS gives away more of their copyrights on the VFP language than other vendors give away from their programming language.

It's not even unusual in other programming languages or even tools like SQL Servers to need license fees for the runtime (or the database server, etc). MS gave a lot more royalty free to VFP developers than other developers get, despite the fact of the existence of free compilers of other languages not only by MS, too. The whole platform of Java is free, too, for example. It's a bit in the MS blood, isn't it? I mean they want their Windows platform to be used, so they support "developers, developers, developers".
 
Last edited:
Thanks Chris for info. I know that using the "&X" macro is really using the compiler for one line of code. The rest of my program is sequential processing of lines of text. Conditionally jumping to line numbers of text and back. Conditionally skipping lines of processed text.

What was the genesis of my tool
A friend of mine once asked me (in half of 90s) to write a program for him to manage a store. The program was to be highly parameterized. So he got highly parameterized ...:cool:
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top