LINUX.ORG.RU

Языковый базис


5

3

Интересно, какие ЯП могут составить наименьшее множество наиболее простых языков, хорошо реализующих все существующие концепции программирования. Так, чтобы любой другой язык являлся комбинацией этих языков, а сами базисные языки имели бы как можно меньше пересечений.

Другими словами, это оптимальный набор языков для обучения программированию.

Какие языки вы бы предложили?

★★★★

Ответ на: комментарий от otnnte

На этом фейляца тысячи идеалистов-теАретиков, не понимая( с тем же представлением данных), что скопировать кусок памяти быстрее, чем обратица к адресу, страницы которого нет в тлб.

ну-ка поподробней.

x4DA ★★★★★
()
Ответ на: комментарий от x4DA

Это совпадение. И Си не есть мой любимый язык)

yoghurt ★★★★★
()

Assembler - чтобы иметь представления о том, как программируется машина(не будем никого обманывать - именно она делает всю работу).

C - чтобы иметь представление о не теряющем «почву под ногами»(т.е. машину) но таки высокоуровневом программировании. На нем же, ИМХО, лучше всего познавать структуры данных, алгоритмы, а так же ОС и пр. системное программирование.

Lisp - чтобы научиться играть абстракциями. Тут я бы рекомендовал Scheme(но это отдельный холивар).

Eiffel(по книге Б.Мейра «Объектно-ориентированное конструирование программных систем») - для ООП. Если ООП понравится, то можно взглянуть на другую его ветвь - smalltalk(если не пойдет он сам - Objective-C).

F#(или Ocaml, если пойдет) - чтобы уметь использовать функциональщину.

Ну а после этого можно переходить к тому, что даст профит и на практике:

C++ - это такой Cи с RAII(!) и шаблонами(не дженериками), а так же немного костыльным(но очень быстрым) ООП.

Haskell - наиболее перспективный функциональный язык, с ленивостью, тайпклассами и монадами. После него и всяческие Agda будут не так тяжко даваться.

Python/Ruby - хорошие скриптовые языки.

Scala - наиболее практичный современный и активно развивающийся язык. Но сложен и требует мозгов.

А всякие там явы и пр. при необходимости осваиваются за неделю.

anonymous
()
Ответ на: комментарий от x4DA

Поциент тут уже столько раз сливался, что не стоит ждать от него адекватного ответа. Он безнадежен. Язабан. Жаль, что в правилах нет пункта о глупости.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, примерно таких ответов я и ждал.

Всем отписавшимся по теме также спасибо.

unsigned ★★★★
() автор топика

Си, схема, питон. Этого для начала хватит.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от otnnte

Вмеямый ЯП - это МЫ Си - МЫ внепарадигмальный МАТЕРИАЛ, МЫ удобная ПРОЕКЦИЯ асм НА ВЫСОКИЙ уровень. МЫ НЕ ГОВНО, ОГРАНИЧЕННОЕ ОДНОЙ ПРОСКОСТЬЮ. МЫ ограничены ТОЛЬКО тем, ЧТО НИЖЕ НАС, ибо МЫ лишь ПРОЕКЦИЯ.

Отсыпь, а?

Разумный человек всегда выберет свободу и не станет рабом шизы

Именно поэтому Си - не всегда лучший вариант, хотя один из. Мне, в отличие от рабов шизы, глубоко пофигу, например, на размерность интов на конкретной платформе - в питоне они неограничены, а в JS всегда 64-битны. Мне нужна свобода резмышления над алгоритмом, а не вечная борьба с косяками платформы. Раньше я тоже писал на си всякую всячину, пока не понял, что 80% времени уходило на приведение типов и прочую не связанную с задачей лабуду. Теперь же максимум, что я напишу на Си для своего принципиально нового ©®™ десктопа - полноэкранную запускалку вебкита и криптографические интерфейсы, если нужно. Для остального есть HTML5 и питон.

border-radius
()
Ответ на: комментарий от anonymous

вот в лоб решенная задача, масса оверхеда - в худшем стиле С++, чтение построчное, особых фич компилятора нет, код переносимый, покажи любое свое решение на С, очень интересно увидеть и сравнить скорость, собс-но задача простая - найти кол-во уникальных слов (с учетом регистра для упрощения, разделители - в примере) и самое употребляемое слово (первое из них, если их несколько), вот сам файл:

http://norvig.com/big.txt

~$ cat 1.cpp
#include <cstring>
#include <fstream>
#include <iostream>
#include <unordered_map>
using namespace std;

int main( void )
{
    string line;
    unordered_map<string,int> counts( 100000 );
    int mc = 0;
    string ms;

    ifstream f( "big.txt" );
    while( f.good() )
    {
        getline( f, line );

        char* word = strtok( (char*) line.c_str(), " ,.-!?:;()\"'" );
        while( word )
        {
            int c = ++counts[ word ];
            if( c > mc )
            {
                mc = c;
                ms = word;
            }

            word = strtok( NULL, " ,.-!?:;()\"'" );
        }
    }
    
    cout << "Words - " << counts.size() << endl;
    cout << "Most used - " << ms << endl;
}

~$ g++ -Ofast -std=c++11 1.cpp 
~$ time ./a.out
Words - 39053
Most used - the

real	0m0.133s
user	0m0.128s
sys	0m0.004s
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.