Как C был похож, прежде чем я родился?

Я не могу говорить с предсказуемостью порядковых номеров, но это будет уникально. Я думаю, что Вы были бы более обеспеченным использованием генератора случайных чисел от Системы. Безопасность. Криптография, все же. Свяжите случайное число монотонно увеличивающимся значением (время) для генерации уникального ключа, и можно быть уверены, что это уникально и не предсказуемо.

9
задан Community 23 May 2017 в 12:19
поделиться

10 ответов

Посмотрите на код ядра Unix Версии 6 - так выглядел C!

См. Комментарий Lion к 6-му изданию Unix ( Amazon ).

Кроме того, было бы проще, если бы вы сказали нам свой возраст - в вашем профиле указано, что вам 22 года, поэтому вы спрашиваете о коде до 1987 г.

Также учтите: Unix Среда программирования с 1984 г.

2
ответ дан 4 December 2019 в 06:41
поделиться

Ну, для начала, не было никакого мусора, связанного с прототипом функции. main () был объявлен так:

/* int */ main(c,v)
int c;
char *v[];
{
    /* Do something here. */
}

И не было ни одного из этих замечательных комментариев с двойной косой чертой. Ни перечислений. Настоящие мужчины использовали #define .

Ааа, мне наворачиваются слезы, вспоминая старые добрые времена: -)

12
ответ дан 4 December 2019 в 06:41
поделиться

В Википедии есть некоторая информация по этой теме.

3
ответ дан 4 December 2019 в 06:41
поделиться

Исходя из личного опыта, моими первыми двумя средами компилятора / разработки C были DeSmet C (16-разрядная командная строка MS-DOS) и Lattice C (также 16-разрядная командная строка MS-DOS). DeSmet C поставляется с собственным текстовым редактором ( see.exe ) и библиотеками - нестандартные функции, такие как scr_rowcol () , позиционируют курсор. Однако даже тогда существовали определенные стандартные функции, такие как printf (), fopen () fread (), fwrite () и fclose () .

Одна из интересных особенностей время было, что у вас был выбор между четырьмя основными моделями памяти - S, P, D и L. Другие вариации появлялись и исчезали с годами, но они были наиболее значимыми. S была "маленькой" моделью, 16-битная адресация как для кода, так и для данных, ограничивая вас 64 КБ для каждого. L использовал 24-битную адресацию, которая представляла собой 16-битный сегментный регистр и 16-битный регистр смещения для вычисления адресов, ограничивая вас до 1024 КБ адресного пространства. Конечно, в мире 16-битной DOS вы были ограничены физическими ограничениями в 640 КБ. P и D были компромиссами между двумя режимами, где P допускал 24-битный (640K) код и 64K данных, а D допускал адресацию 64K и 640K данных.

3
ответ дан 4 December 2019 в 06:41
поделиться

Взгляните на ' домашнюю страницу ' книги K&R в Bell Labs, в частности на заголовок «История языка прослеживается в« The Development » языка Си »», из HOPL II, 1993 »

7
ответ дан 4 December 2019 в 06:41
поделиться

Вот один пример кода, который изменился с помощью ANSI C к лучшему:

double GetSomeInfo(x)
int x;
{
    return (double)x / 2.0;
}

int PerformFabulousTrick(x, y, z)
int x, int y;
double z;
{
    /* here we go */
    z = GetSomeInfo(x, y); /* argument matching?  what's that? */
    return (int)z;
}
3
ответ дан 4 December 2019 в 06:41
поделиться

Впервые я начал работать с C над VAX / VMS в 1986 году. Вот отличия, которые я помню:

  • Нет прототипов - определения функций и изменения были написаны как
    int main() /* no void to specify empty parameter list */
    {
      void foo(); /* no parameter list in declaration */
      ...
    }
    ...
    void foo(x,y)
      int x;
      double y;
    {
      ...
    }
  • Нет универсального (пустого) типа указателя; все функции * alloc () вместо этого вернули char * (что является частью того, почему некоторые люди до сих пор приводят возвращаемое значение malloc (); с компиляторами до ANSI вы имел до);

  • Функции с переменным числом переменных обрабатывались по-разному; никаких фиксированных аргументов не требовалось, а заголовочный файл имел другое имя (varargs.h вместо stdarg.h);

  • Много материала было добавлено в математику. h с годами, особенно в стандарте C99; Си 80-х годов не был лучшим инструментом для числовой работы

  • Библиотеки не были стандартизированы; почти все реализации имели версии stdio, math, string, ctype и т. д., но содержимое не обязательно было одинаковым для разных реализаций.

3
ответ дан 4 December 2019 в 06:41
поделиться

Хотя по очевидным причинам базовый язык появился раньше библиотеки, если вы получите копию первого издания K&R, опубликованную в 1978 году, вы найдете библиотеку очень знакомой. Кроме того, C изначально использовался для разработки под Unix, а библиотека подключена к службам ввода-вывода ОС. Так что я думаю, что утверждение вашего профессора, вероятно, апокрифично.

Наиболее очевидное различие заключается в способе определения функций:

VOID* copy( dest, src, len )
    VOID* dest ;
    VOID* src ;
    int len ;
{
   ...
}

вместо:

void* copy( void* dest, void* src, int len )
{
    ... 
}

например. Обратите внимание на использование VOID; K&R C не имел типа void, и обычно VOID был макросом, определенным как int *. Само собой разумеется, чтобы это работало, проверка типов в ранних компиляторах была разрешительной. С практической точки зрения способность C проверять код была плохой (в основном из-за отсутствия прототипов функций и слабой проверки типов), и отсюда популярность таких инструментов, как lint.

В 1978 году определение языка была книгой K&R. В 1989 году он был стандартизирован ANSI, а позже - ISO, 2-е издание больше не считается определением языка и было основано на ANSI C. Это все еще лучшая книга по C IMO и хорошая книга по программированию в целом.

В Википедии есть краткое описание, которое может помочь. Лучше всего получить первую копию K&R, однако я бы не стал использовать ее для изучения Си, получите 2-е изд. для этого.

способность C проверять код была плохой (в основном из-за отсутствия прототипов функций и слабой проверки типов), и отсюда популярность таких инструментов, как lint.

В 1978 году определение языка было Книга K&R. В 1989 году он был стандартизирован ANSI, а позже - ISO, 2-е издание больше не считается определением языка и было основано на ANSI C. Это все еще лучшая книга по C IMO и хорошая книга по программированию в целом.

В Википедии есть краткое описание, которое может помочь. Лучше всего получить первую копию K&R, однако я бы не стал использовать ее для изучения Си, получите 2-е изд. для этого.

способность C проверять код была низкой (в основном из-за отсутствия прототипов функций и слабой проверки типов), и, следовательно, популярность таких инструментов, как lint.

В 1978 году определение языка было Книга K&R. В 1989 году он был стандартизирован ANSI, а позже - ISO, 2-е издание больше не считается определением языка и было основано на ANSI C. Это все еще лучшая книга по C IMO и хорошая книга по программированию в целом.

В Википедии есть краткое описание, которое может помочь. Лучше всего получить первую копию K&R, однако я бы не стал использовать ее для изучения Си, получите 2-е изд. для этого.

В 1989 году он был стандартизирован ANSI, а позже - ISO, 2-е издание больше не считается определением языка и было основано на ANSI C. Это все еще лучшая книга по C IMO и хорошая книга по программированию в целом.

В Википедии есть краткое описание, которое может помочь. Лучше всего получить первую копию K&R, однако я бы не стал использовать ее для изучения Си, получите 2-е изд. для этого.

В 1989 году он был стандартизирован ANSI, а позже - ISO, 2-е издание больше не считается определением языка и было основано на ANSI C. Это все еще лучшая книга по C IMO и хорошая книга по программированию в целом.

В Википедии есть краткое описание, которое может помочь. Лучше всего получить первую копию K&R, однако я бы не стал использовать ее для изучения Си, получите 2-е изд. для этого.

2
ответ дан 4 December 2019 в 06:41
поделиться

Я начал использовать C в начале 1980-х. Ключевое различие, которое я заметил между тем и другим, заключалось в том, что ранний C не имел прототипов функций, как кто-то заметил. Самый ранний из когда-либо используемых CI имел почти такую ​​же стандартную библиотеку, как и сегодня. Если было время, когда в C не было printf или fwrite, то это было даже до моего времени! Я выучил C из оригинальной книги K&R. Это действительно классика и доказательство того, что технически искушенные люди также могут быть отличными писателями. Я уверен, что вы найдете его на Amazon.

0
ответ дан 4 December 2019 в 06:41
поделиться

Вы можете взглянуть на запутанные записи конкурса C за период времени, который вы ищете.

0
ответ дан 4 December 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: