Friday, October 23, 2015

Besplatan Bellard TCC C++ kompajler - mali, brz, efikasan (Tiny C Compiler)

http://repo.or.cz/w/tinycc.git

https://github.com/LuaDist/tcc


bellard.org/tcc


Ako Vam treba CD sa primerima javite mi se.

Na CD-u se nalaze
* golden samples (WinAPI forme, rad sa datotekama, binarnim fajlovima, unos podataka, dijalozi,...)
* socket samples (Client i Server)
SQLite samples
* MySQL samples

Boldovane primere sam sam isprobao i rade perfektno.

Pošaljite mi PM preko ovog bloga ukoliko želite primere.

Primere za TCC je inače veoma teško naći na internetu, uglavnom sve što radi pod GCC, trebalo bi da radi i pod TCC, ali...

U svakom slučaju primeri su odabrani i prilagodjeni potrebama profesionalnog desktop developera.



Target audience: developers, testers, admins.

Technical background of the participants: basically, it could be anyone who uses command-line tools (e.g. text processing tools, compilers, interpreters, etc.) under Windows and who wants to run these tools directly from the editor.

Participants should take Notebooks: not necessary. There will be practical exercises that could be repeated on their notebooks for better learning and understanding, but basically the exercises will be running on the presenter's laptop (showing them via the projector) with verbal explanations.

Workshop plan:

1. Acquainting the participants and the presenter, identifying the type of the presentation (e.g. concentrate more on Notepad++ part or on NppExec part, on basic usage or on technical details, ...)
Introducing this workshop plan itself to state what will be covered.

2. Notepad++ in brief: what it proposes, what Scintilla is.
The idea of open-source can be mentioned. (The light of open-source in our lives :)
Notepad++ as a text editor uses Scintilla as a text editing component. Scintilla is responsible for text editing and file syntax parsing & highlighting (i.e. functions, keywords and so on).
Whiteboard: a Notepad++ plus Scintilla rectangles will be drawn.
Personalities behind Notepad++:
* Don Ho - N++ lead dev; N++'s logo; https://notepad-plus-plus.org/
* Jens Lorens - N++ docking windows feature; https://sourceforge.net/projects/npp-plugins
* Neil Hodgson - Scintilla lead dev; http://www.scintilla.org/
Scintilla internally uses UTF-8 to represent Unicode text. Currently Scintilla supports case-insensitive searching in UTF-8, but several years ago it did not. At that time, case conversions for UTF-8 were done by means of N++.
Character representation, ASCII table and why Unicode:
* https://en.wikipedia.org/wiki/ASCII
* https://en.wikipedia.org/wiki/Character_encoding

3. NppExec in brief: why and what it is for.
After docked windows were implemented in N++, it was just a question of time when an idea to add a docked "console" window to N++ comes to someone's mind. As no one implemented it yet, NppExec was born.
Whiteboard: a new rectangle with NppExec will be drawn (in addition to the previous drawing). NppExec directly communicates with both N++ and Scintilla.
Whiteboard: a console process rectangle will be drawn near NppExec's rectangle, and a pipe will be drawn between them. (This directly represents that a system pipe is used for input/output communication between a console process and NppExec.)
Other plugins can be mentioned, e.g. PythonScript ( http://npppythonscript.sourceforge.net/ ).
NppExec download: https://sourceforge.net/projects/npp-plugins/files/NppExec/
NppExec forum: https://sourceforge.net/p/npp-plugins/discussion/672146/
Download the latest NppExec_dll zip archive (currently under "NppExec Plugin v0.5.9.9 dev") and unpack it to your local "Notepad++\plugins" folder.
References to the NppExec Manual:
* 1.1. Introduction
* 1.2. NppExec is...
* 1.3. NppExec is not...
* 2.2. The NppExec plugin (NppExec.dll)
* 2.3. Installing the latest version
* 2.4. Using several copies of NppExec
NppExec's Console is a GUI window with "RichEdit" control in it, it's not a *real* console.
It's a good idea to set a monospace font (such as Courier New) in NppExec's Console via Plugins -> NppExec -> Change Console Font.

4. NppExec in details, basing on its Manual, practical examples using external tools (e.g. Python - https://www.python.org/ , Tiny C - http://bellard.org/tcc/ ).
Typing "help" and "help [command]" in NppExec's Console are the best and recommended ways to get any help. This embedded help contains the most detailed, accurate and up-to-date information.
NppExec does not do anything implicitly - NppExec only does what was explicitly requested. For example, "cmd.exe" is _never_ invoked until it is mentioned explicitly by specifying "cmd /C" or "cmd /K" at the beginning of a command that is expected to be performed by the command line interpreter.
References to NppExec Manual:
* 3.1. Getting help
* 3.2. Do something (intro)
* 3.3. Do something (how-to)
* 3.4. NppExec's submenu
* 4.4. Using cmd.exe
* 4.5. Console output redirection

Go through NppExec's menu items and explain them. NppExec's commands and scripts.
References to NppExec Manual:
* 3.4. NppExec's submenu
* 3.5. NppExec's Console
* 3.6. NppExec's "Execute..."
* 3.7. NppExec's script

Demonstrate running cmd.exe and the 2-sides interaction between Notepad++ and a running a console process.

Macro-variables and environment variables; different types of variables: "set", "set local", "env_set" (type "help set", "help env_set" for details).
References to NppExec Manual:
* 3.8.1. Predefined (read-only) variables
* 3.8.2. User (internal) variables
* 3.8.3. Environment (heritable) variables
* 3.8.4. Calculations, strlen and so on

Use Python or Tiny C as the first example of "Compiling ANY source file".
Demonstrate a compilation error and create a dynamic highlight filter to deal with it (type "help con_filter" for details).
Show "npe_debug 1" reaction to the double-click on an error.
A good idea is to present a simple C program that demonstrates pipe buffering and using fflush.
References to NppExec Manual:
* 4.0. Introduction to compiling/interpreting/etc.
* 4.7.1. Compiling simple C and Pas-programs
* 4.7.4. Compiling ANY source file

Several useful command line tools:
* 4.6.8. Clipboard, keysrokes and much more